저는 Ubuntu 14.04.02 32비트를 사용하고 있습니다.
일부 쉘 프로그래밍을 수행하는 동안 sh 명령을 통해 스크립트를 실행하면 때때로 오류가 발생하는 것을 발견했습니다.
sh 명령이 #!/bin/bash 대신 대시 쉘을 호출하기 때문입니까?
선택 명령을 사용하는 데 문제가 있습니다.
./scriptName.sh를 통해 실행하면 모든 것이 잘 진행되지만 sh scriptName.sh에서는 구문 오류가 보고됩니다. 왜 이런 일이 발생합니까?
답변1
스크립트가 bash 구문을 사용하는 경우 로 시작해야 합니다 #!/bin/bash
. 스크립트를 실행하면 /path/to/script
모든 것이 잘 됩니다. 인터프리터(셸)를 명시적으로 호출하는 경우 올바른 인터프리터, 즉 bash
not sh
또는 무엇인가를 호출해야 합니다 perl
.
많은 변형이 있습니다 sh
. 배쉬도 그 중 하나입니다. 대시는 또 다른 것입니다. Dash는 bash보다 기능이 적지만 더 빠르고 메모리를 덜 사용합니다. 이것이 Ubuntu가 dash를 사용하기로 선택한 이유입니다 sh
. bash의 추가 기능이 필요한 경우 어쨌든 명시적으로 호출해야 합니다.