Bash

自定義我的 PS1 或一般 Bash 提示時遇到問題

  • July 3, 2021

我在 Linux Mint 20.1 Cinnamon 中,這次並不重要,

我無法自定義我的 PS1,或者通常 Bash 提示為最後一個字元$(使用者)著色;#(根)。

目前 PS1 程式碼在.bashrc

if [ "$color_prompt" = yes ]; then
   color_red=$(tput bold)$(tput setaf 1)
   color_green=$(tput bold)$(tput setaf 2)
   color_reset=$(tput sgr0)
   PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD $color_green\$$color_reset '
else
   PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD \$ '
fi

問題描述:

當我啟動終端gnome-terminal

亂碼終端範例

我無法解釋,你可以嗎?我究竟做錯了什麼?

PS:我不確定為什麼它是單引號,如果我可以將它改為雙引號……


失敗#2

剛剛嘗試將其“轉換”為雙引號格式,這在多次更新歷史記錄時再次導致麻煩。

PS1="\u @ \h \[\$PWD\] \[$(tput bold)\]\[$(tput setaf 2)\]\\$\[$(tput sgr0)\] "

失敗#3

我現在開始放棄了,我最後的機會是直接使用轉義序列,如下所示:

PS1='\u @ \h $PWD \e[1;32m\$ \e[0m'

如前所述,它會使我的終端出現亂碼,我目前正在將其設置為沒有顏色才能工作。

PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD \[$color_green\]\$\[$color_reset\] '

請參閱我的這個答案。您需要包裝\[ \]任何不可列印的序列,僅此而已。列印的片段(即添加到提示的長度)不應該被包裝。

在您的嘗試中,您要麼包裹得太少(什麼都沒有),要麼包裹得太多($PWD)。

引用自:https://unix.stackexchange.com/questions/656712