如何在 bash 提示符下显示绝对路径?

Dav*_*d B 63 bash path prompt

我目前将我的 bashPS1设置为这样的:

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "
Run Code Online (Sandbox Code Playgroud)

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

cYr*_*rus 65

只需替换\w\$PWD

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\$PWD\n\$ "
Run Code Online (Sandbox Code Playgroud)

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

PS1='\[`[ $? = 0 ] && X=2 || X=1; tput setaf $X`\]\h\[`tput sgr0`\]:$PWD\n\$ '
Run Code Online (Sandbox Code Playgroud)

  • 我也想到了这一点,但是在分配给 `PS1` 时评估 `$PWD`,而不是在每次调用时。*然而*,如果你转义美元符号,它会起作用——`\$PWD`。有了这个,美元符号在赋值时是一个美元符号,变量评估发生在每个提示上。+1 给你。 (4认同)

小智 37

放在你家 .bashrc

PS1='\u@\h:\w\$ '
Run Code Online (Sandbox Code Playgroud)

  • 这里的关键是 `\w` 给出了完整路径,而 `\W` 只给出了目录。参见 ["Bash 提示转义序列"](http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/bash-prompt-escape-sequences.html) (9认同)