BASH_ENV 在 Solaris 上被忽略了吗?

BASH_ENV 在 Solaris 上被忽略了吗?

在我的 .bash_profile 中,针对我的交互式和非交互式登录执行的是

BASH_ENV=$HOME/.myinteractivestuff
export BASH_ENV

在 Linux 上对 bash 执行此操作可以正常工作,但在 Solaris 上却无法执行:

bash --version
GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10)

奇怪的是,如果我在登录 shell 中调用 screen,则会读取 BASH_ENV。在 Solaris 上,$BASH_ENV 的适用时间是否有任何限制?就我而言,我使用 putty 通过 ssh 登录,但也尝试了 unix 到 unix ssh 和 telnet,结果相同。

请注意,我知道我的 BASH_ENV 变量赋值正在执行,因为我可以在登录后毫无困难地回显这个变量(即:排除我的 .bash_profile 也没有被读取的明显可能性)。

答案1

不太清楚您的期望是什么。bash 手册说 $BASH_ENV 的值仅在执行 shell 脚本时使用,但您的示例表明您在其中放入了交互式命令BASH_ENV=$HOME/.myinteractivestuff

BASH_ENV

          If  this parameter is set when bash is executing a shell script,
          its value is interpreted as a filename  containing  commands  to
          initialize the shell, as in ~/.bashrc...

答案2

您说的是 BASH_ENV 变量是在 Solaris 下设置的,这意味着您发布的两行代码工作正常。它们唯一做的事情就是设置导出变量,然后您确认它已完成。

如果设置了,则在启动 bash shell 脚本时会运行 BASH_ENV。这意味着如果 ~/.myinteractivestuff 在您的 Linux 环境中运行,则您要么在设置 BASH_ENV 后在其他地方运行某个脚本,要么在启动脚本的某个地方明确地引用它。

顺便说一句,你可以写得更简单一些:

export BASH_ENV=~/.myinteractivestuff

相关内容