shell提示符中的当前目录缩写规则

shell提示符中的当前目录缩写规则

有时我看到 shell 提示符中的当前工作目录是缩写的,有时不是。

例如/usr/bin将显示为bin$/folder1/folder2显示为folder2$,在其他情况下我看到/folder1/folder2显示为完整/folder1/folder2$

我正在使用默认终端设置(我正在使用 Fedora 22 虚拟机进行学习,但我也在使用不同发行版的其他几个教程视频中注意到了这一事实)

有什么规则吗?

答案1

如果使用的话,另一种缩短路径的方法\w是使用PROMPT_DIRTRIMshell 变量。演示:

jackman@b7q9bw1:/usr/local/share/doc $ echo "$PS1"
\u@\h:\w \$ 
jackman@b7q9bw1:/usr/local/share/doc $ pwd
/usr/local/share/doc
jackman@b7q9bw1:/usr/local/share/doc $ PROMPT_DIRTRIM=2
jackman@b7q9bw1:.../share/doc $ pwd
/usr/local/share/doc
jackman@b7q9bw1:.../share/doc $ 

答案2

主提示中显示的内容由变量的内容决定PS1。以下是 bash 文档的摘录:

\w     the current working  directory,  with  $HOME  abbreviated
       with  a tilde (uses the value of the PROMPT_DIRTRIM vari‐
       able)
\W     the basename of the current working directory, with $HOME
       abbreviated with a tilde

这意味着如果您PS1使用\w,则将打印当前目录的整个路径,而\W会导致您观察到的其他行为:仅显示最后一个组件(在这两种情况下,对于您的主目录都有例外)。

PS1我尝试过的一些随机的基于 Linux 的系统上的 默认值是[\u@\h \W]\$,但这因系统而异。

答案3

这与 PS1 变量中的内容有关。您可以通过执行来检查您的 PS1 变量echo $PS1

如果有\w,您会看到完整路径,如果有\W,您只能看到最后一个文件夹。

相关内容