우리네 장
우분투는 Dash shell! 본문
최근 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라고 하네요!
'OS' 카테고리의 다른 글
성능 측정을 위한 OS 알기 #1- bounded process (2) | 2024.03.18 |
---|---|
cp와 mv 중 cpu의 오버헤드를 일으키는 명령어는? (4) | 2024.03.08 |
[ 동기화 #5 ] 모니터 in JAVA (2) | 2023.12.27 |
[ 동기화 #4 ] 모니터 (1) | 2023.12.27 |
가시성 feat.volatile (0) | 2023.12.27 |