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

$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 ответ1

0

$SHELL хранит вашу оболочку по умолчанию, а не текущую. Вместо этого попробуйте echo $0 :

$ echo $SHELL
/bin/bash
$ echo $0
dash

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .