我正在尝试更改终端中的命令提示符。

-bash: __git_ps1: command not found

我已经尝试过,只需将其输入终端即可:__git_ps1.bash_profile

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

正如您可能看到/告诉的那样,是的,我确实安装了自动完成功能,而且效果很好!

我遇到了这个问题:"PS1 环境变量在 mac 上不起作用" 给出了代码

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

所以我将它添加到我的.bash_profile希望它能改变一些事情。

这是.bash_profile添加:

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

现在这是更改后的错误输出:

sed: (%s): No such file or directory

Note: 我还将别名移到了源代码下方,没有任何区别。git 版本 1.7.12.1

这应该是一个简单的改变。

Edit 10/13/12

不,我绝对不想自己定义 __git_ps1 ,但只是想看看这样做是否会被识别。.git-completion.bash文件已安装。

cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash

Als -la然后列出.git-completion.bash文件。

Edit 10/13/12 - Solved by Mark Longair (below)

以下代码对我有用.bash_profile而其他人则没有…

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi

答案

您安装的版本是git-completion.bashmaster- 在 git 的发展历史中,这是在一次提交之后分离出来的__git_ps1函数从完成功能到一个新文件(git-prompt.sh)。AF31A456

我仍然建议您只获取以下版本git-completion.bash(或者git-prompt.sh)与您的 git 安装捆绑在一起。

但是,如果由于某种原因您仍然想通过使用从以下位置单独下载的脚本来使用此功能master,你应该下载git-prompt.sh相似地:

curl -o ~/.git-prompt.sh \
    https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

…并将以下行添加到您的~/.bash_profile:

source ~/.git-prompt.sh

那么你的PS1变量包括__git_ps1 '%s'应该可以正常工作。

来自: stackoverflow.com