Bash提示换行问题

时间:2013-09-01 14:34:07

标签: macos bash command-prompt ps1

新手问题,我最近将我的PS1改为:

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
YELLOW="\[\033[0;33m\]"
CYAN="\[\033[0;36m\]"

export PS1="\[$RESET\]\u@\h:\[$CYAN\]\w\[$YELLOW\]\$(__git_ps1)\[$NORMAL\] \$ "

但是现在我收到了换行错误。我创建了一个gif来解释这个问题:

enter image description here

任何想法可能出错?

3 个答案:

答案 0 :(得分:4)

我认为你用[和]双引号转义代码。试试这个:

export PS1="$RESET\u@\h:$CYAN\w$YELLOW\$(__git_ps1)$NORMAL \$ "

答案 1 :(得分:0)

每当不转义非打印字符时(例如更改提示颜色的转义码),就会发生包装错误。当语言环境设置为不理解unicode字符的内容,并且提示包括它们时,也会发生这种情况。一个例子是不间断空格。当语言环境为“ C”并且提示中包含Unicode字符时,shell认为打印的字符要比实际打印的字符多,并且提示会过早地回绕。

答案 2 :(得分:0)

shopt -s checkwinsize 这应该可以解决您的问题。 这将设置变量 checkwinsize on。这是在 /etc/bashrc 中默认设置的,但是由于您使用的是自定义 .bashrc 文件,因此您可以将此代码放在那里或在您的 .bashrc 文件中通过在顶部添加 . /etc/bashrc 来加载 /etc/bashrc .bashrc 文件。