TL;DR:
PS1 并不像它应该的那样。
PS1="\W"
显示为\w█
闪烁的光标块。只有在目录更改后才会显示文件夹名称。操作系统是 Debian 9.9 Stretch。我不太确定我在哪里犯了错误,请其他人看看并给出他们的专业意见。
以下是我的.bashrc
:
RED='\[\033[31m\]'
BOLD_RED='\[\033[1;31m\]'
YELLOW='\[\033[33m\]'
GREEN='\[\033[32m\]'
BLUE='\[\033[01;34m\]'
BOLD_BLUISH='\[\033[01;32m\]'
NORMAL='\[\033[00m\]'
USR='\u'
TIME='\t'
PWD='\w'
DIR='\W'
RIGHTS='\$'
RESET='\[$(tput sgr0)\]'
if [ $(id -u) -eq 0 ]; then
PS1="$NORMAL\t·$BOLD_RED\u@\h$NORMAL·$GREEN$DIR·$NORMAL\$ $RESET"
else
PS1="$GREEN\t$NORMAL·$BOLD_BLUISH\u@\h$NORMAL·$BLUE$DIR$NORMAL·\$ $RESET"
fi
答案1
这是因为PWD
是一个 shell 变量。来自man 1 bash
:
PWD
命令设置的当前工作目录cd
。
当前工作目录更改时,Bash 会更新此变量。似乎如果PS1
使用\W
或\w
,提示符将从变量中读取,因此如果您这样做(或刚刚这样做),PWD='\w'
则提示符将显示文字\w
。尝试使用其他值(例如PWD="Oh boy, this string should not appear in my prompt!"
),您的提示符将反映这一点。
cd
当shell 更新变量后,提示符的行为就PS1="\W"
应该如此。
通用解决方案:lowercase
对变量使用名称。