创建 bash 提示符,显示我的主目录之后的目录

创建 bash 提示符,显示我的主目录之后的目录

例如,如果我的主目录是“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情况,请将当前路径的变量设置为%-2din PROMPT。这就是你想要的。

我的.zshrc

PROMPT="[username@srv1 %-2d]"

相关内容