우리네 장

우분투는 Dash shell! 본문

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라고 하네요!