根据路径动态更改bash提示符

6
我想知道是否可以根据当前路径或pwd值更改PS1?
例如:
cd /home/user/directory1
PS1=[\e[1;32m\u\e[m@\e[1;34m\h\e[m \e[1;33m\W\e[m]

但如果我在另一个目录中:

cd /home/user/thisdirectory
PS1=[\w]

Thank you in advance!

2个回答

17

您可以使用此代码。

[user1@myhost ~]myfunc() { DIR=`pwd`;if [ "$DIR" = "/home/user1" ]; then  export PS1="[\e[1;32m\u\e[m@\e[1;34m\h\e[m \e[1;33m\W\e[m]" ;else export PS1="[\w]";fi; }
[user1@myhost ~]PROMPT_COMMAND="myfunc"
[user1@myhost ~]cd /tmp
[/tmp]cd
[user1@myhost ~]cd /etc
[/etc]cd
[user1@myhost ~]

当我改变目录时,提示符会相应地改变。


非常好!将函数分配给PROMPT_COMMAND很聪明。 - nullsteph

7

PROMPT_COMMAND是您要寻找的bash变量:

PROMPT_COMMAND
       If set, the value is executed as a command prior to issuing
       each primary prompt.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接