使用更改的提示PS1启动bash过程

时间:2011-12-31 11:52:04

标签: bash shell

如何使用更改的提示启动bash子流程。使用env不起作用:

env PS1="change >" bash --login

不起作用。结果应与启动进程后使用导出相同:

$ export PS1="change >"
change >

~/.bashrc必须像往常一样进行评估。

3 个答案:

答案 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)。