有时我看到 shell 提示符中的当前工作目录是缩写的,有时不是。
例如/usr/bin
将显示为bin$
或/folder1/folder2
显示为folder2$
,在其他情况下我看到/folder1/folder2
显示为完整/folder1/folder2$
我正在使用默认终端设置(我正在使用 Fedora 22 虚拟机进行学习,但我也在使用不同发行版的其他几个教程视频中注意到了这一事实)
有什么规则吗?
答案1
如果使用的话,另一种缩短路径的方法\w
是使用PROMPT_DIRTRIM
shell 变量。演示:
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
,您只能看到最后一个文件夹。