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 shell,并且它可以正常工作。为什么 login shell 无法获取源文件?
更新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 基准测试的一个文件(是一个知名程序,不是我的代码)我的假设是它是正确的。(事实上,在非登录 shell 上,它可以工作)
答案1
$SHELL
存储的是您的默认 shell,而不是当前 shell。请尝试echo $0
:
$ echo $SHELL
/bin/bash
$ echo $0
dash