- bash:__ git_ps1: 未找到命令

我尝试安装 Ruby 2.0:

-bash: __git_ps1: command not found
[11:58:28][whatever@whatever ~]$

我不知道如何去掉 _ _ git _ ps1命令 not found error。我已经找过了。Bash _ profile 和我的。Bashrc 看看它是否试图设置一个变量或东西,并没有看到任何东西。我只能在 ~/中找到提到的 git _ ps1。Dotfiles/.Bash _ 提示符。我完全替换了那个文件的内容,注销并重新登录,但是什么也没有修复。

我看到了 这个,但是我对命令行很陌生,所以我只是把自己弄糊涂了。

有什么想法吗?

83341 次浏览

运行以下命令:

$ curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

把这个加到你的 ~/.bashrc上面:

source ~/.bash_git

重新登录到你的 shell,你应该被设置。

BASH 有很多自动设置提示符的方法,可以提供很好的信息。通过设置 PS1环境变量来设置提示符。例如,如果我设置 PS1="$ ",我的提示符看起来就像这样:

$

没有太多的信息。我所能告诉的是命令行提示我。

但是,如果我设置 PS1=\u@\h: \w$,我的提示符现在看起来是这样的:

david@vegibank:/usr/bin$

它告诉我如何登录(\u)、登录的机器(\h)和所在的目录(\w)。如果我使用 git,那么如果我所在的 git 分支也是提示符的一部分,那就太好了。

这正是 .profile.bashrc文件、 .bash_login或者 .bash_profile脚本所发生的情况。或者,一些系统管理员在 /etc/profile中所做的。

有几件事你可以做:

  • 下载丢失的 __git_ps1,并确保它在你的 $PATH环境变量中(这是由上面提到的各种初始化文件的组合设置的)
  • 更改正在执行的任何初始化文件中的 PS1环境变量(我相信它可能是 .bash_profile

把这句话加到最后一行:

PS1="\u@\h:\w\n$ "

添加的 \n在下面的行上打印美元符号提示符,如下所示:

david@vegibank:/usr/bin
$

我喜欢这样做,因为提示符可能会变得相当长,当提示符超过30到50个字符时,编辑命令行就会变得棘手。否则,它几乎就是大多数用户使用的标准提示符。在 手册中可以看到更多关于设置 BASH 提示符的内容。(在该页面上搜索“提示”这个词)。

如果您觉得有点困惑,请庆幸您没有使用 Kornshell。我使用 Kornshell 并且为了获得与 PS1=\u@\h:\w\n$相同的提示符,我将提示符设置为:

export PS1='$(print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")'

在你的系统中搜索一个 git-prompt.sh,你需要使用 source才能使用 __git_ps1函数。在 Arch,它目前位于 /usr/share/git/completion/git-prompt.sh。加

source /path/to/git-prompt.sh

一些合适的外壳脚本。如果您不确定在哪里,添加到您的 ~/.bashrc

如果安装了 locate,可以使用它查找 git-prompt.sh文件,但可能需要首先以 root 用户身份运行 updatedb

从2019年起,在安装 git包时应该安装提示帮助器函数,可以在 /usr/lib/git-core/git-sh-prompt上找到。

如果没有加载,安装 bash-completion软件包并查看您的 ~/.bashrc

在我的案例中,我不得不删除以下评论:

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi

打开一个新的壳,一切都很好。

根本原因是在新安装时首先没有正确设置“ bash 完成”。

引自 /usr/lib/git-core/git-sh-prompt:

# This script allows you to see repository status in your prompt.
#
# To enable:
#
#    1) Copy this file to somewhere (e.g. ~/.git-prompt.sh).
#    2) Add the following line to your .bashrc/.zshrc:
#        source ~/.git-prompt.sh
#    3a) Change your PS1 to call __git_ps1 as
#        command-substitution:
#        Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
#        ZSH:  setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
#        the optional argument will be used as format string.
#    3b) Alternatively, for a slightly faster prompt, __git_ps1 can
#        be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
#        with two parameters, <pre> and <post>, which are strings
#        you would put in $PS1 before and after the status string
#        generated by the git-prompt machinery.  e.g.
#        Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
#          will show username, at-sign, host, colon, cwd, then
#          various status string, followed by dollar and SP, as
#          your prompt.
#        ZSH:  precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
#          will show username, pipe, then various status string,
#          followed by colon, cwd, dollar and SP, as your prompt.
#        Optionally, you can supply a third argument with a printf
#        format string to finetune the output of the branch status

按照这些步骤应该修复您的问题! !

我只是简单地用

sudo apt install git

这是因为 git 没有安装,因此没有定义环境变量。

跑步 source /usr/share/bash-completion/completions/git 为我工作的 Ubuntu-like 发行版与 git version 2.17.1

~/.zshrc中删除 快点插件

+ plugins=(git vscode laravel emoji timer zsh-autosuggestions gitfast)
- plugins=(git vscode laravel emoji timer zsh-autosuggestions)