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

関連情報