Bash
當路徑包含 unicode(希臘語)字元時,Bash 提示符換行被破壞
當路徑太長而無法在終端上容納並換行時,以下提示將被破壞,您無法正確看到鍵入的內容。請看下面的截圖:
這些是該
.bashrc
設置的內容PS1
,這是 Ubuntu 提供的預設設置。if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac
的
$PS1
值為echo "$PS1" \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
有什麼辦法可以解決嗎?
我已經看到了其他幾個類似的問題,建議的解決方案是將有問題的部分包含在
\[ \]
或 setcheckwinsize
中,但在我的情況下都不起作用。如果有人想使用路徑進行測試,則如下:
/home/dimitriv/Dropbox/personal/kastoria/2018-2019/προγραμματισμός στο διαδίκτυο/newslides
快速修復可能是
PS1
用PROMPT_COMMAND
腳本替換視窗標題設置部分。在
case "$TERM" in ... esac
你的塊內.bashrc
,替換PS1=...
為PROMPT_COMMAND='printf %b "\e]0;${debian_chroot:+($debian_chroot)}$USER@$HOSTNAME:$PWD\a"'