.bashrc:脚本内优先级

时间:2012-10-01 13:45:51

标签: bash

我正试图用我的bash提示做两个'高级'的事情。

  1. 我想显示我上次命令的状态。我想展示我的
  2. 当前的git分支(如果我在git repo中)
  3. 我可以分别做两个,我也可以做'然后',但我不能'那么'(这是我想要的)。 当我尝试在状态停止工作之前尝试放置时,无论最后一个命令的状态是什么,只要保持相同的状态。 /:

    我正在附上我的.bashrc。如您所见,最后两行是两种可能性。注释掉的是那个不起作用的那个。

    .bashrc

    PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
    
    alias sublime="'/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl'"
    alias nano="sublime"
    export EDITOR="sublime"
    
    
    GREEN="\[\e[32;1m\]"
    YELLOW="\[\e[33m\]"
    RED="\[\e[31m\]"
    
    DEFAULT="\[\e[0m\]"
    BRACKETS=$GREEN
    HAPPY=$YELLOW
    SAD=$RED
    BRANCH=$YELLOW
    
    
    function parse_git_branch () {
           git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
    }
    
    SUCCESS_STR="\`if [ \$? = 0 ]; then echo $HAPPY^_^$DEFAULT; else echo $SAD'O_o'$DEFAULT; fi\`"
    
    # Nice looking bash prompt
    PS1="\n$BRACKETS[$DEFAULT\u$BRACKETS]-[$DEFAULT\w$BRACKETS]\n$SUCCESS_STR$BRANCH\$(parse_git_branch) $ "
    # PS1="\n$BRACKETS[$DEFAULT\u$BRACKETS]-[$DEFAULT\w$BRANCH\$(parse_git_branch)$BRACKETS]\n$SUCCESS_STR $ "
    

1 个答案:

答案 0 :(得分:0)

对于第一点,这就是我在所有* nixes上所做的。

把它放在你身上~/.bashrc(简化PS1以避免噪音):

PROMPT_COMMAND=$(
    cat<<-'EOF'

    _temp_var=$val_ret _pipe_status="${PIPESTATUS[@]}"

    if((val_ret == 0)); then
        _temp_var=$(( $(tr -s " " "+" <<< "$_pipe_status") ))
    else
        _temp_var=$val_ret
    fi

    if((_temp_var == 0)); then
        PS1="\u@\h:\w$"
    else
        PS1="\u@\h:\w|ERROR:$_temp_var|$"
    fi
    EOF
)

了解它的作用:

prompt

来自man bash

  

PROMPT_COMMAND

     

如果设置,则在发出每个主要提示之前将该值作为命令执行。