
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