使用缩写路径:

使用缩写路径:

我基本上试图让我的 PS1 在 git 存储库中看起来像这样:

$ ~/Projects/Blah (master):

或者,如果我不在 Git 存储库中,我希望它看起来像这样:

$ ~/Projects/Blah:

这是我现在的 PS1:

export PS1="$ \w \$(__git_ps1): "

它适用于 git repo 输出,但问题是,如果我不在 git repo 中,输出如下所示:

$ ~/Projects/Blah :

如果它不是 git 存储库,我真的不想要那里的空间,有什么方法可以在我的 PS1 中指定它吗?

答案1

我使用 afunction动态设置提示。这是我的特定函数,在我的开发环境初始化脚本中定义:

function prompt_cmd
{
  # Tell the terminal application (using escape sequences) what the CWD is.
  # (this comes from /etc/bashrc)
  update_term_cwd

  if [[ "$ORIG_PS1" == "" ]]; then
    export ORIG_PS1=$PS1
  fi

  if [[ "$CURRENT_PROJECT" == "" ]]; then
    export PS1=$ORIG_PS1
  else
    if [[ "$PWD" == "$DEV_HOME/projects/$CURRENT_PROJECT"* ]]; then
       PWD_COLOR=''
    else
       PWD_COLOR='\[\e[0;31m\]'
    fi
    export PS1="\[\e[0;32m\]$CURRENT_PROJECT\[\e[m\]:$PWD_COLOR\W\[\e[m\]$ "
  fi
}

(如果我碰巧偏离了我认为自己所在的项目,它会将提示的路径部分设置为红色!)

...然后告诉 bash 使用该函数:

export PROMPT_COMMAND=prompt_cmd

答案2

PS1我对这种事情所做的就是在更改目录时更改值。这在执行chpwd命令的 zsh 中是微不足道的;它可以在 bash 中完成定义围绕cd和朋友的包装器

cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
chpwd () {
  if git rev-parse --show-toplevel 2>/dev/null >/dev/null; then
    PS1='$ \w $(__git_ps1): '
  else
    PS1='$ \w: '
  fi
}

答案3

我最终用了这个.git-prompt.sh文件。使其发挥作用的步骤:

  1. .git-prompt.sh在您的主目录 ( ) 中创建一个名为的文件~/.git-prompt.sh,并将上面链接中的代码复制到其中。
  2. 在您的.bash_profile.bashrc文件中,添加以下行:source ~/.git-prompt.sh
  3. 将你的 PS1 更改为:PS1='\n$ \w$(__git_ps1 " (%s)"): '

答案4

# .bashrc example edits to PS1 for git

使用缩写路径:

    # -- With color:
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[01;33m\]$([[ "$(git branch --show-current 2>/dev/null)" == "" ]] || echo " ("$(git branch --show-current 2>/dev/null)")")\[\033[00m\]\$ '

    # -- Without color:
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W$([[ "$(git branch --show-current 2>/dev/null)" == "" ]] || echo " ("$(git branch --show-current 2>/dev/null)")")\$ '

按照要求:

    # -- With color:
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;33m\]$([[ "$(git branch --show-current 2>/dev/null)" == "" ]] || echo " ("$(git branch --show-current 2>/dev/null)")")\[\033[00m\]: '

    # -- Without color:
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$([[ "$(git branch --show-current 2>/dev/null)" == "" ]] || echo " ("$(git branch --show-current 2>/dev/null)")"): '

从 KDE Plasma Bash Konsole

相关内容