如何在 bash 提示符中显示真实的当前目录,而不是符号链接

如何在 bash 提示符中显示真实的当前目录,而不是符号链接

我使用 Ubuntu 自带的 PS1 的默认值:

\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$

90% 的情况下都正确。但是,当我cd指向符号链接“目录”时,使用的是符号链接的名称,而不是值pwd -P

\w我如何更改 \w 以获取真实的当前目录?并且仍然以或所呈现的格式显示\W

答案1

使用$(pwd -P)而不是\w。像这样:

PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]$(pwd -P)\[\033[00m\]$ '

答案2

为了扩展 hek2mgl 的答案,使您的提示“自动”,请使用变量PROMPT_COMMAND

PROMPT_COMMAND='PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]$(pwd -P)\[\033[00m\]\$ "'

来自手册:

PROMPT_COMMAND

如果设置,则该值将被解释为在打印每个主提示符 ($PS1) 之前执行的命令。

相关内容