如何让我的 bash 提示符在结尾行尾(光标像往常一样位于同一行的开头)?具体来说,我希望显示一个缩写的单字符提示符,例如$
或,>
然后我可以输入命令。但我希望能够在行尾看到当前工作目录,而不是“在我面前”。
我不在乎输入很长的命令时会发生什么。它可以覆盖当前工作目录或提示符显示的其他内容。
另外,我并不介意提示导致当前工作目录显示在屏幕的右上角或左上角,或右下角/左下角。我只是不想它一直出现在我面前,但我希望它是可见的。
答案1
我能够将 PS1 设置为在提示行末尾打印当前路径的内容:
PS1='\[$(for ((i=1; i < COLUMNS - ${#PWD} - 3; ++i)) ; do printf " " ; done ; printf "$PWD")\]'
但它有几个我无法解决的问题:
- 按Backspace
- 尽管整个表达式都包含在零宽度标记中
\[...\]
,但一旦打印或$
,>
光标就会移动到最右边。
我见过人们使用PROMPT_COMMAND=pwd
它来显示路径,但它减少了终端中包含命令的行数。
另一个选择是配置您的终端或 screen/tmux 以在某处显示路径。例如,以下内容在 xterm 中有效:
PS1='\[\e[m\e]0;\W\a\]$ '
序列\e[m\e]0;...\a
设置窗口的标题。在屏幕中,它是 "\033k\033\0134\033kTITLE\033\0134"
。