我有一个 shell 脚本来设置一些环境变量并启动我作为参数发送的任何程序:
export PATH=$HOME/local/bin:$PATH
export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH
export TESTER="MY TEST VAR"
$@
Run Code Online (Sandbox Code Playgroud)
bash
例如,当我使用它来调用它时,它可以工作:
kjfletch@flatbed:~$ envrun.sh bash
kjfletch@flatbed:~$ echo $LD_LIBRARY_PATH
/home/kjfletch/local/lib:
kjfletch@flatbed:~$ echo $TESTER
MY TEST VAR
Run Code Online (Sandbox Code Playgroud)
当我用它来调用终端 ( xterm
, aterm
, ...) 时,我LD_LIBRARY_PATH
会被取消设置:
kjfletch@flatbed:~$ echo $LD_LIBRARY_PATH
kjfletch@flatbed:~$ echo $TESTER
MY TEST VAR
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?我怎么能阻止这个?(我正在运行 Debian 5.0)
我的终端没有调用 bash 作为登录:
kjfletch@flatbed:~$ echo $0
bash
Run Code Online (Sandbox Code Playgroud)
我的LD_LIBRARY_PATH
没有出现在任何 bash 启动文件中(除了 .bash_history 和 ~/.profile 不存在。):
kjfletch@flatbed:~$ grep "LD" ~/.bash*
kjfletch@flatbed:~$ grep "LD" /etc/bash.bashrc
kjfletch@flatbed:~$ grep "LD" /etc/profile
Run Code Online (Sandbox Code Playgroud)