我如何用一个改变的提示符启动一个bash子进程。使用env不起作用:
env PS1="change >" bash --login
不起作用结果应该与在进程启动后使用export相同:
$ export PS1="change >" change >
~/.bashrc必须像往常一样进行计算。
~/.bashrc
5jdjgkvh1#
另一个解决方案是:
bash --rcfile <(cat ~/.bashrc; echo 'PS1="change > "')
这通过执行用户启动文件的“扩展”版本来保留别名和co。
o4tp2gmn2#
行为正常:对于--login,bash会读取你的初始化文件,这些文件会重新定义PS1。您可以尝试:
--login
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* 的文件。
kadbb4593#
试试bash --rcfile <(echo "export PS1='somethingelse>'")这使用进程替换来创建一个包含PS1设置的“文件”,并将其提供给bash。您当前的shell应该支持这种替换(bash和zsh支持)。
bash --rcfile <(echo "export PS1='somethingelse>'")
3条答案
按热度按时间5jdjgkvh1#
另一个解决方案是:
这通过执行用户启动文件的“扩展”版本来保留别名和co。
o4tp2gmn2#
行为正常:对于
--login
,bash会读取你的初始化文件,这些文件会重新定义PS1
。您可以尝试:
这对我很有效:
但它之所以有效 * 是因为.bashrc不提供任何重新定义PS1* 的文件。
kadbb4593#
试试
bash --rcfile <(echo "export PS1='somethingelse>'")
这使用进程替换来创建一个包含PS1设置的“文件”,并将其提供给bash。您当前的shell应该支持这种替换(bash和zsh支持)。