如何使用更改的提示启动bash子流程。使用env不起作用:
env PS1="change >" bash --login
不起作用。结果应与启动进程后使用导出相同:
$ export PS1="change >"
change >
~/.bashrc
必须像往常一样进行评估。
答案 0 :(得分:12)
另一种解决方案是:
bash --rcfile <(cat ~/.bashrc; echo 'PS1="change > "')
通过执行用户启动文件的“扩展”版本来保留别名和共享。
答案 1 :(得分:5)
行为正常:使用--login
时,bash会读取您的初始化文件,并重新定义PS1
。
您可以尝试:
(source .bashrc; env PS1="change >" bash --norc)
这对我有用:
fg@erwin ~ $ grep FOO ~/.bashrc
export FOO=bar
fg@erwin ~ $ (source ~/.bashrc; env PS1="change> " bash --norc)
change> echo $FOO
bar
但它仅适用于,因为.bashrc不会提供任何重新定义PS1 的文件。
答案 2 :(得分:4)
试试bash --rcfile <(echo "export PS1='somethingelse>'")
。这使用进程替换来创建包含PS1设置的“文件”并将其赋予bash。你当前的shell应该支持这种替换(bash和zsh do)。