web-dev-qa-db-ja.com

-bash:__git_ps1:コマンドが見つかりません

私はRuby 2.0をインストールしようとしました。私のコマンドラインはurpedで、現在は次のようになっています。

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

__git_ps1コマンドが見つからないというエラーを取り除く方法がわかりません。 .bash_profileと.bashrcを検索して、変数または何かを設定しようとしているかどうかを確認しましたが、何も表示されていません。上記のgit_ps1を見つけることができる唯一の場所は〜/ .dotfiles/.bash_Promptです。そのファイルの内容を完全に置き換え、ログアウトしてからログインし直しても、何も修正されません。

this を見ましたが、コマンドラインが初めてなので、混乱しました。

何か案は?

50
Joel Dehlin

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ページ でBASHプロンプトの設定の詳細を確認できます。 (そのページでWord Promptingを検索します)。

少しわかりにくい場合は、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$ ")'
22
David W.

以下を実行します。

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

そして、これを~/.bashrcの先頭に追加します:

source ~/.bash_git

シェルに再ログインすると、設定が完了します。

113
Blake

システムでgit-Prompt.shを検索します。__git_ps1関数を使用するには、sourceにする必要があります。 Archでは、現在/usr/share/git/completion/git-Prompt.shにあります。追加

source /path/to/git-Prompt.sh

適切なシェルスクリプトに。どこがわからない場合は、~/.bashrcに追加してください。

locateがインストールされている場合は、それを使用してgit-Prompt.shファイルを見つけることができますが、最初にupdatedbをルートとして実行する必要がある場合があります。

40
Emil Lundberg

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-completion」が適切に設定されていなかったことです。

3
sjas

/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

これらの手順に従うと問題が解決するはずです!!

2
ShubhamDhama