Syntax error: "(" unexpected

eunshik·2023년 11월 24일

쉘 스크립트 파일을 실행하였을 때 오류가 출력되었다.

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

0개의 댓글