
bash는 터미널에서 bash를 수동으로 실행하지 않는 한 로그인 터미널에서 파일을 소스로 제공하지 않습니다. bash는 sh나 dash가 아닙니다. 파일을 소스로 사용하면 실행하지 않는 한 오류(예: "예기치 못한 구문 오류")가 반환됩니다.$ 배쉬소스 전
$echo $TERM
screen-256color
$echo $SHELL
/bin/bash
$shopt login_shell
login_shell on
오류:
$source ./shrc
-bash: ./shrc: line 105: syntax error near unexpected token `('
$bash
$source ./shrc <-- now it works
어떤 아이디어가 있나요?
업데이트 1
bash를 실행할 때 non_login 쉘에 입력하면 작동합니다. 로그인 쉘이 파일 소스를 찾을 수 없는 이유는 무엇입니까?
업데이트 2
$echo $0
-bash
$bash
$echo $0
bash
업데이트 3
else
echo;
echo "The SPEC environment variable is not set! Please source the shrc and try again."
echo;
fi
}
ogo() { <----- LINE 105
SHRC_NO_GO=0
TOP=$SPEC
if [ "x$TOP" != "x" ]; then
if [ "x$1" = "x--help" -o "x$1" = "x-h" ]; then
SPEC2006 벤치마크의 파일입니다(잘 알려진 프로그램이며 내 코드가 아닙니다). 내 가정은 그것이 정확하다는 것입니다. (실제로 로그인이 아닌 쉘에서는 작동합니다)
답변1
$SHELL
현재 쉘이 아닌 기본 쉘을 저장합니다. 대신 시도해 보세요 echo $0
:
$ echo $SHELL
/bin/bash
$ echo $0
dash