-bash:__git_ps1:找不到命令
Posted
技术标签:
【中文标题】-bash:__git_ps1:找不到命令【英文标题】:-bash: __git_ps1: command not found 【发布时间】:2013-03-01 07:28:55 【问题描述】:我尝试安装 Ruby 2.0。我的命令行 urped 现在如下所示:
-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,但我对命令行还很陌生,所以我只是把自己弄糊涂了。
有什么想法吗?
【问题讨论】:
你用的是哪个版本的git? 看看bbs.archlinux.org/viewtopic.php?id=147462 git 版本 1.7.10.2 (Apple Git-33) 解决于:gist.github.com/scottious/0d99ea77daa041b28929 【参考方案1】:运行以下命令:
$ curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git
并将其添加到您的 ~/.bashrc
的顶部:
source ~/.bash_git
重新登录到你的 shell,你应该已经设置好了。
【讨论】:
布莱克,我明白了: curl: (3)/usr/share/git-core/contrib/completion/git-prompt.sh
@AlexJordan 在 Arch 下也是如此:/usr/share/git/completion/git-prompt.sh
在 Debian Jessie 上它被称为 git-sh-prompt
并且位于 /usr/lib/git-core/git-sh-prompt
【参考方案2】:
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$ ")'
【讨论】:
我将此添加到我的 BP 的最后一行,至少现在它没有中断。将继续尝试找出为什么我不能卷曲下面并使其工作。谢谢大家。 进入 Git 并手动下载文件。在浏览器中转到github.com/git/git/blob/master/contrib/completion/git-prompt.sh,然后单击Raw 按钮。然后剪切和粘贴。 问题是关于在 git-prompt.sh 中声明的“__git_ps1”。 @emil-lundberg 的答案是正确的答案 @Metal3d 实际上,问题是关于 OP 的混乱提示中的 command not found 错误,以及如何摆脱它。【参考方案3】:在您的系统中搜索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
。
【讨论】:
这是一个很好的答案,在 PS1 导出 "source /usr/share/git-core/contrib/completion/git-prompt.sh" 之前将其添加到 ~/.bashrc 中,不带引号跨度> 这适用于 debian 拉伸,我安装了 git-core,但我没有git-prompt.sh
或 completion
文件夹。【参考方案4】:
截至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”。
【讨论】:
【参考方案5】:引用/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
按照这些步骤应该可以解决您的问题!!
【讨论】:
【参考方案6】:我简单地解决了它
sudo apt install git
出现这个是因为没有安装git,所以没有定义环境变量。
【讨论】:
以上是关于-bash:__git_ps1:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章