bash 提示:在行末显示当前目录

bash 提示:在行末显示当前目录

如何让我的 bash 提示符在结尾行尾(光标像往常一样位于同一行的开头)?具体来说,我希望显示一个缩写的单字符提示符,例如$或,>然后我可以输入命令。但我希望能够在行尾看到当前工作目录,而不是“在我面前”。

我不在乎输入很长的命令时会发生什么。它可以覆盖当前工作目录或提示符显示的其他内容。

另外,我并不介意提示导致当前工作目录显示在屏幕的右上角或左上角,或右下角/左下角。我只是不想它一直出现在我面前,但我希望它是可见的。

答案1

我能够将 PS1 设置为在提示行末尾打印当前路径的内容:

PS1='\[$(for ((i=1; i < COLUMNS - ${#PWD} - 3; ++i)) ; do printf " " ; done ; printf "$PWD")\]'

但它有几个我无法解决的问题:

  1. Backspace
  2. 尽管整个表达式都包含在零宽度标记中\[...\],但一旦打印或$>光标就会移动到最右边。

我见过人们使用PROMPT_COMMAND=pwd它来显示路径,但它减少了终端中包含命令的行数。

另一个选择是配置您的终端或 screen/tmux 以在某处显示路径。例如,以下内容在 xterm 中有效:

PS1='\[\e[m\e]0;\W\a\]$ '

序列\e[m\e]0;...\a设置窗口的标题。在屏幕中,它是 "\033k\033\0134\033kTITLE\033\0134"

相关内容