Bash重复第一行

时间:2013-03-26 23:47:14

标签: bash .bash-profile

我刚刚编辑了我的.bash_profile以添加git分支显示。我基于我在网上找到的版本,但是现在当我在shell中写一些东西时,在行尾,它会覆盖第一行,然后它开始换行到新行。

function proml {
  case $TERM in
    xterm*)
     TITLEBAR='\[\033]0;\u@\h:\w\007\]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac

PS1="${TITLEBAR}\
\w$WHITE\$(parse_git_branch)\\e[m$ "

这是parse_git_branch函数

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/[\1]/'
}

由于我对bash_profile了解不多,我不知道错误在哪里?

2 个答案:

答案 0 :(得分:0)

这是问题吗? proml函数>末尾缺少大括号?

function proml {
  case $TERM in
    xterm*)
     TITLEBAR='\[\033]0;\u@\h:\w\007\]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac

PS1="${TITLEBAR}\
\w$WHITE\$(parse_git_branch)\\e[m$ "
}

答案 1 :(得分:0)

假设$WHITE包含用于设置文本颜色的控制代码,您需要将其括起来  \[ ... \]阻止bash认为这些字符会影响提示的长度。

function proml {
  case $TERM in
    xterm*)
     TITLEBAR='\[\033]0;\u@\h:\w\007\]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac
}

PS1="${TITLEBAR}\
\w\[$WHITE\]\$(parse_git_branch)\[\e[m\]$ "