在我的 .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