除非手动启动,否则 Bash 不会生成文件

除非手动启动,否则 Bash 不会生成文件

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

相关内容