Linux

Linux - Shebang

개발 일기92 2025. 3. 16. 11:33

쉘 스크립트의 첫 줄에 나오는 #!/bin/bash는 ''셰뱅(Shebang)" 이라고 불리며,

스크립트를 실행할 때 사용할 인터프리터를 지정하는 역할을 한다.

1. #!/bin/bash의 의미

  • #!(Shebang) 뒤에 오는 /bin/bash는 **Bash(Bourne Again Shell)**를 사용하여 스크립트를 실행
  • 즉, 스크립트는 /bin/bash를 통해 실행되며, Bash 문법을 따르게 된다.

2. 다른 셰뱅의 종류

셰뱅은 Bash뿐만 아니라 다양한 인터프리터를 지정할 수 있다. 

#!/bin/sh POSIX 호환 Bourne Shell 사용 (일반적으로 /bin/sh는 시스템에 따라 다른 셸로 연결될 수 있음)
#!/bin/bash Bash 사용 (리눅스에서 가장 많이 사용됨)
#!/bin/zsh Zsh 사용 (강력한 기능을 가진 셸)
#!/usr/bin/env bash 환경변수에서 Bash 경로 탐색 후 실행 (다양한 시스템 호환성 확보)
#!/usr/bin/python3 Python 3 인터프리터 사용 (Python 스크립트 실행 시)
#!/usr/bin/perl Perl 인터프리터 사용
#!/usr/bin/ruby Ruby 인터프리터 사용

3. #!/bin/bash와 #!/usr/bin/env bash 차이점

  • #!/bin/bash → /bin/bash가 존재하는 경로에서 실행
  • #!/usr/bin/env bash → env 명령어를 사용하여 환경 변수에서 bash의 경로를 찾은 후 실행
  • 후자는 다양한 OS에서 Bash가 다른 경로에 있을 경우에도 실행 가능하므로, 이식성이 높음.

4. 만약 셰뱅이 없다면?

  • 스크립트를 실행할 때 명시적으로 해석기를 지정해야 한다.
     
  • 만약 실행 권한이 있는 상태에서 ./script.sh로 실행하면, 기본 셸(보통 /bin/sh)이 사용됩니다.
bash script.sh

OR

sh script.sh

'Linux' 카테고리의 다른 글

Linux - expect, spawn, send etc..  (0) 2025.03.16
Linux - crontab  (0) 2025.03.09
Linux - find  (0) 2025.03.02
Linux - grep  (0) 2025.03.02
Linux - TOP  (0) 2025.01.12