shell -bash:__git_ps1:未找到命令

dl5txlt9  于 2023-05-18  发布在  Shell
关注(0)|答案(8)|浏览(271)

安装Ruby 2.0我的命令行发出声音,现在看起来像下面这样:

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

我不知道如何摆脱__git_ps1: command not found错误。我已经搜索了我的.bash_profile和我的.bashrc,看看它是否试图设置一个变量或什么,但没有看到任何东西。我唯一能找到提到的git_ps1的地方是~/.dotfiles/.bash_prompt。我完全替换了该文件的内容,注销并重新登录,它什么也没修复。
我看到了this,但我对命令行很陌生,所以我只是混淆了自己。
有什么想法吗

nue99wik

nue99wik1#

运行以下命令:

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

然后把这个添加到~/.bashrc的顶部:

source ~/.bash_git

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

z18hc3ub

z18hc3ub2#

在系统中搜索git-prompt.sh,您需要source才能使用__git_ps1功能。在Arch中,它目前位于/usr/share/git/completion/git-prompt.sh。添加

source /path/to/git-prompt.sh

一些合适的shell脚本。如果您不确定在哪里,请将其添加到~/.bashrc
如果您安装了locate,您可以使用它来查找git-prompt.sh文件,但您可能需要首先以root身份运行updatedb

h22fl7wq

h22fl7wq3#

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个字符时,编辑命令行会变得棘手。否则,它几乎是大多数用户使用的标准提示符。您可以在man pages中看到更多关于设置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$ ")'
dwthyt8l

dwthyt8l4#

引用/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

按照这些步骤应该可以解决您的问题!!

68de4m5k

68de4m5k5#

从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

打开一个新的 shell ,一切都很好。
根本原因是“bash-completion”在一开始就没有正确设置。

omvjsjqw

omvjsjqw6#

我简单地用

sudo apt install git

出现这种情况是因为git没有安装,因此环境变量没有定义。

t0ybt7op

t0ybt7op7#

运行source /usr/share/bash-completion/completions/git对我来说很有效,在类似Ubuntu的发行版上使用git version 2.17.1

rqqzpn5f

rqqzpn5f8#

~/.zshrc删除gitfast插件

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

相关问题