私は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 を見ましたが、コマンドラインが初めてなので、混乱しました。
何か案は?
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$ ")'
以下を実行します。
$ curl -L https://raw.github.com/git/git/master/contrib/completion/git-Prompt.sh > ~/.bash_git
そして、これを~/.bashrc
の先頭に追加します:
source ~/.bash_git
シェルに再ログインすると、設定が完了します。
システムで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
をルートとして実行する必要がある場合があります。
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」が適切に設定されていなかったことです。
/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
これらの手順に従うと問題が解決するはずです!!