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

Tho*_*ung 12 bash shell

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

env PS1="change >" bash --login
Run Code Online (Sandbox Code Playgroud)

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

$ export PS1="change >"
change >
Run Code Online (Sandbox Code Playgroud)

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

A.H*_*.H. 13

另一种解决方案是:

bash --rcfile <(cat ~/.bashrc; echo 'PS1="change > "')
Run Code Online (Sandbox Code Playgroud)

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


fge*_*fge 6

行为是正常的:使用--login,bash将读取您的初始化文件并重新定义这些文件PS1.

你可以尝试:

(source .bashrc; env PS1="change >" bash --norc)
Run Code Online (Sandbox Code Playgroud)

这对我有用:

fg@erwin ~ $ grep FOO ~/.bashrc
export FOO=bar
fg@erwin ~ $ (source ~/.bashrc; env PS1="change> " bash --norc)
change> echo $FOO
bar
Run Code Online (Sandbox Code Playgroud)

但它只能起作用,因为.bashrc不会提供任何重新定义PS1的文件.


Nou*_*him 5

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