假设我在目录下做了很多工作/home/user/documents/foo
,那么 Bash shell 提示符可能会出现如下情况:
user@hostname: ~/documents/foo/bar/baz $
我的航站楼非常狭窄,而且这~/documents/foo
对空间的利用没有什么帮助,因为我已经知道我在那里了。
因此我希望我的 shell 提示符显示相对于以下的 /home/user/documents/foo
工作目录:
user@hostname: bar/baz $
提示由PS1
环境变量定义,我可以找到编辑它的方法来包含相对于我的用户主目录的路径,或者仅包含基本名称,但我似乎无法获取相对于不同目录的路径。
来自
bash
手册:如果您的提示字符串 (
PS1
) 使用\w
或\W
,您可能需要使用PROMPT_DIRTRIM=2
。Zsh
%~
可以缩短任何命名目录,其缩短方式与 zsh 和 Bash 中的缩短方式类似$HOME
。但如果您不想更改 shell,则可以在 Bash 中手动执行此操作,如下所示:这里,如果
shorten_dirs()
工作目录的初始部分$PWD
与关联数组中的任何映射匹配,则用缩写替换它short_dirs
。该函数设置shorter_dir
提示本身中使用的变量。PROMPT_COMMAND
在打印每个提示之前调用该函数。在实际操作中,它看起来像这样(从 开始
/
):但这尚未经过广泛的测试。