쉘 스크립트 파일을 실행하였을 때 오류가 출력되었다.
sh myshell.sh
myshell.sh: 3: myshell.sh: Syntax error: "(" unexpected
쉘 스크립트 내용 :
#!/bin/bash
function print() {
echo $1
}
print "I can speak Korean"
ubuntu 리눅스에서
sh 명령어가 가리키는 기본shell 은 dash 이다. ( 아래와 같이 확인 가능 )
ls -l /bin/sh
lrwxrwxrwx 1 root root 4 7월 18 2019 /bin/sh -> dash
때문에 sh 명령어로 실행할 경우 dash 로 실행하게 될 것인데,
위와 같은 함수를 지원하지 않기 때문에 발생하는 문제이다.
아래와 같이 실행할 경우 정상적으로 출력된다.
./myshell.sh
I can speak Korean
쉘 스크립트 내용 중 최상단에 작성한
#!/bin/bash 라는 코드가
이 스크립트를 어떤 shell 로 실행할 것인지 미리 정의해 놓은 구문이기 때문이다.
( bash 쉘은 함수를 지원 )
참고로 chsh 명령어를 통해 (change shell) 기본Shell 을 변경할 수 있다.
sudo chsh -s /usr/bin/bash