当我创建一个新的bash进程时,提示符默认为非常简单的一个。
我知道可以编辑.bashrc等文件来更改这个设置,但是有没有一种方法可以通过bash命令传递提示符?
谢谢!
提示符由环境变量PS1、PS2、PS3和PS4定义。因此,例如以下命令将启动一个新的bash,并将提示符设置为“foo:”:
PS1="foo: " bash --norc
--norc
是必需的,以抑制处理初始化文件,这些文件会覆盖PS1
变量。
PROMPT_COMMAND
是空的。 - Aaron D. Marasco~/.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
设置命令(实际上是覆盖),这最终会存储到/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$
你可以设置一个环境变量,然后在 .bashrc 中使用该环境变量来定制你的提示符。
PROMPT_COMMAND='PS1="(customize) $PS1"; PROMPT_COMMAND=' $SHELL
有一个警告,只有在默认配置文件没有设置PROMPT_COMMAND
时才能工作。但这比它们不设置PS1
更有可能。
~/.bashrc
中设置PS1
。 - another.anon.coward