shell 启动bash进程并更改提示符PS1

bz4sfanl  于 2023-05-29  发布在  Shell
关注(0)|答案(3)|浏览(124)

我如何用一个改变的提示符启动一个bash子进程。使用env不起作用:

env PS1="change >" bash --login

不起作用结果应该与在进程启动后使用export相同:

$ export PS1="change >"
change >

~/.bashrc必须像往常一样进行计算。

5jdjgkvh

5jdjgkvh1#

另一个解决方案是:

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

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

o4tp2gmn

o4tp2gmn2#

行为正常:对于--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* 的文件。

kadbb459

kadbb4593#

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

相关问题