如何在 Bash 提示符中显示绝对路径?

如何在 Bash 提示符中显示绝对路径?

我目前将我的 bashPS1设置为如下形式:

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "

我怎样才能让它显示绝对路径而不是相对路径(例如/home/dave/dir而不是~/dir)?

答案1

只需替换\w\$PWD

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\$PWD\n\$ "

无论如何,如果你介意一点提示,我会写类似的东西:

PS1='\[`[ $? = 0 ] && X=2 || X=1; tput setaf $X`\]\h\[`tput sgr0`\]:$PWD\n\$ '

答案2

放在家里.bashrc

PS1='\u@\h:\w\$ '

答案3

运行pwd而不是使用\W

简单版本:

export PS1="\`pwd\` $ "

在您的代码中使用它:

export PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\`pwd\`\n\$ "

答案4

嗯~/dir 是绝对路径,但使用“快捷方式”。例如,如果您这样做,cd /usr/local您的提示很可能会显示 /usr/local 的完整路径。所以无论如何,您已经有了一个完整路径 :-)

但可能您的正确问题是如何在没有任何快捷方式(如~)的情况下显示完整路径?

然而,我不知道这个问题的答案,但看着那个人,似乎有一个答案(至少有记录)。

相关内容