Bash는 수동으로 시작하지 않는 한 파일을 소스로 사용하지 않습니다.

Bash는 수동으로 시작하지 않는 한 파일을 소스로 사용하지 않습니다.

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

관련 정보