例如,如果我的主目录是“FirstLast”并且我位于
/usr/FirstLast/Dir1/Dir2/Dir3
我希望我的提示能够阅读
[username@srv1 Dir1]
无论我的目录有多深。因此,无论我在 Dir2 还是 Dir3,提示都应该显示“Dir1”。
我不希望使用 pwd 显示整个路径,并且我不希望当前目录。
答案1
在字符串中使用\W
(大写 W)而不是\w
(小写)PS1
。例如
PS1='[\u@\h \W] '
从man bash
:
\w
当前工作目录,$HOME 缩写为波浪号(使用变量的值PROMPT_DIRTRIM
)
\W
当前工作目录的基本名称,$HOME
缩写为波形符
在 中bash
,您还可以设置PROMPT_DIRTRIM
变量:
PROMPT_DIRTRIM
如果设置为大于零的数字,则该值用作扩展
\w
和\W
提示字符串转义时要保留的尾随目录组件的数量(请参阅下面的提示)。删除的字符将替换为省略号。
如果您希望提示始终显示当前目录上方两层的目录(或类似复杂或不寻常的内容),您将需要使用命令替换PS1 字符串内。
请注意,PS1 字符串必须用单引号括起来,而不是双引号 - 否则您将在定义 PS1 时获得命令子集的返回值,而不是每次出现提示时都重新计算它被展示。
例如
PS1='[\u@\h $(basename $(realpath ../../))] '
答案2
如果您遇到这种zsh
情况,请将当前路径的变量设置为%-2d
in PROMPT
。这就是你想要的。
我的.zshrc
:
PROMPT="[username@srv1 %-2d]"