6

当我创建一个新的 bash 进程时,提示默认为一个非常简单的。我知道我可以编辑 .bashrc 等来改变它,但是有没有办法用 bash 命令传递提示?

谢谢!

4

3 回答 3

9

提示由 PS1、PS2、PS3 和 PS4 环境变量定义。因此,例如以下将启动一个新的 bash,提示设置为“foo:”:

PS1="foo: " bash --norc

--norc需要抑制初始化文件的处理,这将覆盖变量PS1

于 2012-04-16T17:23:32.750 回答
4

我有同样的问题 - 我想从命令行启动一个临时 bash;并且大多数其他环境变量仍然存在;那些来源~/.bashrc的东西很难覆盖——特别是如果你像我一样,真的想保留~/.bashrc你已经拥有的东西(和里面的别名等)——除了PS1提示。

这是对我有用的东西(注意这--init-file是 的同义词/别名--rcfile):

bash --rcfile <(cat ~/.bashrc ; echo 'PS1="\[\033[0;33m\]\u@HELLO:\W\$\[\033[00m\] "')

基本上,方括号/小于 + 括号习语<()启动bash进程替换;括号内回显到标准输出的所有内容都将在一个临时文件中结束,/dev/fd/<n>. 所以我们首先 cat 出来的内容~/.bashrc;然后我们只需PS1在末尾添加一个 set 命令,(它有效地覆盖) - 这最终在/dev/fd/<n>; 然后bash用于/dev/fd/<n>新的rcfile.

这是它的行为方式:

user@pc:tmp$ TESTVAR="testing" bash --rcfile <(cat ~/.bashrc ; echo 'PS1="\[\033[0;33m\]\u@HELLO:\W\$\[\033[00m\] "')
user@HELLO:tmp$ test-alias-tab-completion ^C
user@HELLO:tmp$ echo $TESTVAR 
testing
user@HELLO:tmp$ exit
exit
user@pc:tmp$ 
于 2013-08-12T04:12:58.043 回答
0

您可以设置一个环境变量,然后在 .bashrc 中的提示符中使用该环境变量。

于 2012-04-16T17:18:44.770 回答