使用更改后的提示符PS1启动bash进程

16

如何启动一个带有修改提示符的Bash子进程。使用env无效:

env PS1="change >" bash --login

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

$ export PS1="change >"
change >

~/.bashrc 必须按照通常的方式进行评估。


1
我投票关闭此问题,因为根据新的主题规则,它与编程无关,所以应该属于Unix和Linux SE。 - Maximillian Laumeister
3个回答

18
另一种解决方案是:
bash --rcfile <(cat ~/.bashrc; echo 'PS1="change > "')

这将通过执行用户启动文件的“扩展”版本来保留别名和 co。


6
行为正常:使用--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 的文件的情况。

应该把这个加到细则里。我需要运行 .bashrc。 - Thomas Jung
你能把它粘贴吗?如果它源文件重新定义了PS1,那么你基本上是注定要失败的... - fge

5
尝试使用 bash --rcfile <(echo "export PS1='somethingelse>'") 命令。这个命令使用进程替换创建一个“文件”,其中包含PS1设置,并将其传递给bash。您当前的shell应支持这种替换(bash和zsh均支持)。

1
谢谢。这对我来说解决了问题。我在.bashrc、.profile和其他脚本中有很多东西干扰了我的操作。 - CSkau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接