2011-12-31 73 views
8

如何用改变后的提示启动bash子进程。使用env不起作用:改变提示开始bash过程PS1

env PS1="change >" bash --login 

不起作用。结果应该是一样的进程启动后使用导出:

$ export PS1="change >" 
change > 

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

回答

7

另一个解决方案是:

bash --rcfile <(cat ~/.bashrc; echo 'PS1="change > "') 

这通过执行和用户的“扩展”版本startupfile保持别名和合作。

5

该行为是正常的:与--login,bash将读取您的初始化文件,并重新定义PS1

你可以试试:

(source .bashrc; env PS1="change >" bash --norc) 

这个工作对我来说:

[email protected] ~ $ grep FOO ~/.bashrc 
export FOO=bar 
[email protected] ~ $ (source ~/.bashrc; env PS1="change> " bash --norc) 
change> echo $FOO 
bar 

但它只能因为.bashrc中没有来源,重新定义PS1的任何文件。

+0

应该已经添加到fineprint。我必须运行.bashrc。 – 2011-12-31 12:08:42

+0

你可以粘贴它吗?如果它来源重新定义PS1的文件,你几乎注定了... – fge 2011-12-31 12:11:05

+0

查看编辑的解决方案 – fge 2011-12-31 12:17:53

2

尝试bash --rcfile <(echo "export PS1='somethingelse>'")。这使用进程替换来创建一个包含PS1设置的“文件”并将其提供给bash。你当前的shell应该支持这种替换(bash和zsh)。

+0

谢谢。这是我的门票。 我在.bashrc,.profile和其他被干扰的脚本中有很多东西。 – CSkau 2012-02-29 12:46:54