OS
우분투는 Dash shell!
qpmi1zm29
2024. 3. 8. 17:06
최근 inotify-tools라는 디렉토리 감지 모듈을 도커를 통해 설치하면서, 같은 리눅스 계열이지만 조금씩 다른 os들을 많이 사용해 보았어요.
쉘 스크립트 파일을 보면 가장 상단에 "#!/bin/bash" 라고 하는 명령어구를 대부분의 쉘에서 모두 작성하는데,
이게 아무런 기능이 없는게 아니었습니다..
명령어를 수행하는 쉘은 dash / bash / busybox 등의 종류가 있는데,
CentOS 들은 bash shell
Ubuntu 들은 dash shell을 사용하더라구요.
( busybox는 기본적으로 사용했을 때 sh가 실행이 되지 않았습니다.. )
그래서 근본적으로는 같은 리눅스 계열이기 때문에 호환 문제가 크지 않지만, 가끔 호환되지 않는 명령어가 있더라구요.
아까 말했던, #!/bin/bash 는 bash shell을 사용해서 돌리겠다는 의미입니다.
이를 적용하기 위해서는 script 실행 명령어에 주의해야 하는데요.
sh 파일을 저렇게 적어놓고 실행을 sh test.sh 로 실행하면 sh 로 저장된 쉘이 실행이 돼요.
즉 우분투에서는 스크립트 내부 지정과는 상관없이 dash로 돌리게 된다는 의미이죠..
그래서 sh가 아닌 ./test.sh 로 돌려야 합니다.
저는 명시적인 방법을 선호하는 편이라 이전까지 sh test.sh 로 실행했었는데.
위와 같이 실행하는 것이 best practice라고 하네요!