我想在 Bash 中做这样的事情:
但我尝试的所有结果都会被PWD
固定到我启动终端的第一个目录。奇怪的是,我还有一个函数PS1
可以将当前的 git 分支放入提示符中,并且总是更新,所以我很困惑为什么被PWD
卡住了。我当前的提示在这儿顺便。
我尝试替换\w
为$(pwd|grep --color=always /)
,但只是卡住了。我也尝试使用 bash 字符串替换来完成此操作,但这也不起作用。${PWD////$bldred/$bldblu}
($bldred和$bldblu在我的prompt.sh中定义)。
答案1
在提示中包含动态变量时,您需要引用它。
我不太明白你的一些 PROMPT_COMMAND 内容,但请PS1='${PWD////'"$bldred/$bldblue"'} \$'
自行尝试一下,看看它是否有效。
答案2
脚本的最后一部分:
case "$TERM" in
xterm*|rxvt*)
PS1=...
...
当你设置时就没用了$PROMPT_COMMAND
- 该版本$PS1
只会运行一次。因此,在第一次运行该脚本后,您将不会看到标题更新。您需要将标题更改$PROMPT_COMMAND
与其他所有内容一起添加。
将其移至switch
真正的分支内
if [ "$color_prompt" = yes ]; then
并在此基础上构建不同的版本$PROMPT_COMMANDS
。对我有用。