쉘 스크립트의 첫 줄에 나오는 #!/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 |