Bash не создает исходный файл, если не запущен вручную

Bash не создает исходный файл, если не запущен вручную

bash не будет загружать файлы из терминала входа, если я вручную не запущу bash из терминала, у меня bash (а не sh или dash). Когда я загружу файл, он возвращает ошибки (типа "syntax error near unexpected"), если я не запущу$ башдо источника

$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, и это работает. Почему оболочка 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

Связанный контент