我有一个小脚本,可以一次性设置整个系统的代理,它调用 gconftool-2,在 ~/.ssh/config 中设置代理,并为 apt 设置代理。这一切都相对简单。真正的问题在于更新我正在运行的 bash 会话。
可以从提示符($PS1、$PROMPT_COMMAND,甚至将 Enter 绑定到命令)运行命令 - 但这些都作为单独的命令执行 - 因此对我当前的环境没有影响。我不想执行这些命令,而是想获取它们。
甚至这也不起作用:
export PS1="\$(source /etc/profile.d/proxy.sh)$ "
我明白为什么它不起作用(我认为),但我该如何解决它呢?
谢谢马克
答案1
您可能已经怀疑,您显示的内容不起作用的原因是$()
创建了一个子 shell。子 shell 中的更改不会保留到父级,并且如您所说,不会影响您当前的环境。但是,PROMPT_COMMAND
无需创建子 shell 即可执行您想要的操作:
export PROMPT_COMMAND='source /etc/profile.d/proxy.sh'