当我创建一个新的bash进程时,提示默认为一个非常简单的进程。 我知道我可以编辑.bashrc等来改变它,但有没有办法用bash命令传递提示符?
谢谢!
答案 0 :(得分:8)
提示由PS1,PS2,PS3和PS4环境变量定义。所以,例如以下将启动一个新的bash,提示设置为“foo:”:
PS1="foo: " bash --norc
需要--norc
来禁止处理初始化文件,这会覆盖PS1
变量。
答案 1 :(得分:4)
我有同样的问题 - 我想从命令行启动临时bash;而大多数其他环境变量仍然存在;那些来自~/.bashrc
的东西很难被覆盖 - 特别是如果你像我一样,实际上想要保留你已经拥有的~/.bashrc
(以及内部的别名等) - 除了PS1
提示。
以下内容对我有用(请注意--init-file
是--rcfile
的同义词/别名):
bash --rcfile <(cat ~/.bashrc ; echo 'PS1="\[\033[0;33m\]\u@HELLO:\W\$\[\033[00m\] "')
基本上,括号/小于+括号成语<()
启动bash
进程替换;在括号内回显到stdout的所有内容都将以临时文件/dev/fd/<n>
结束。所以我们先得出~/.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$
答案 2 :(得分:0)
您可以设置环境变量,然后在.bashrc中的提示符中使用该环境变量。