2013-07-23 20 views
9

シェルプロンプトでgitブランチ名を表示することができました。しかし、私が取得している画面を使用しているときはいつでも、プロンプトでGitブランチ名

bash: parse_git_branch: command not found 

とgitブランチは表示されません。 画面セッションでもこれを手伝ってください。

私の.bash_profileには次のようなものがあります。

  • OS:OSX 10.8.4
  • ターミナル& iTerm2
  • 画面のバージョン:4.00.03(私は.git-completion.bash

    システムのスペックを持っていない

    parse_git_branch() { 
        git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/ 
    } 
    
    export PS1="[\W\$(parse_git_branch)]$ " 
    

    FAU)23-Oct-06

+0

はどのようにあなたのプロンプトをカスタマイズしていますか? PS1の文字列を教えてください。 –

+0

'.git-completion.bash'ファイルはあなたのメインシェルのどこにあるのですか?(つまり画面なし?) –

答えて

1

あなたのsedは文の終わりに'が欠落しています

parse_git_branch() { 
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' 
} 
export PS1="[\W\$(parse_git_branch)]$ " 

Othewerise、これがはるかに簡単ですbash-3.2

+0

残念ながら、それは私のために働いていません。私はscreenrcに何かを追加する必要がありますか? – user2610733

+0

"コマンドが見つかりません"というメッセージが表示されますか? .bash_profileには他に何がありますか?楽しみのために、 '' .bash_profile''の '' testFunc(){ \t echo "test!"にテスト関数を入れてみてください。 } ''を呼び出して呼び出します。 –

+4

私はそれを解決しました。私がスクリーンにいたら、 'source〜/ .bash_profile'を使います。すべての設定を元に戻します。助けてくれてありがとう。 – user2610733

2

に私のために働くようだと不要なsedの回避:

parse_git_branch() { 

    while read -r branch; do 
     [[ $branch = \** ]] && current_branch=${branch#* } 
    done < <(git branch 2>/dev/null) 

    [[ $current_branch ]] && printf ' [%s]' "$current_branch" 

} 
5

画面下で実行しているときに同じ問題が発生し、parse_git_branch()機能の定義をから移動することで解決できました〜.bashrc

+0

'.bash_profile'から' .bashrc'に移動またはコピーできます。私はこの問題を、関数をコピーすることで解決しました。 –

5

端末を開くと、.bash_profileが実行され、したがってPS1が定義されます。次にscreenを実行し、画面にparse_git_branchの呼び出しを含む環境変数PS1を読み込み、それを解析しようとします。しかし、画面が実行されなかったので.bash_profile関数parse_git_branchは画面内で定義されていません。

PS1の定義を.bashrcに移動すると、screenとiTermの両方が実行されるためです。

1

私はssh-agent /bin/bashに起動するときにrootに切り替えたりするとき、私はチェックして/etc/bashrcにそれを置くためにそれを解決OS Xハイシエラで同じエラーが発生しました私はルートだ場合

if [[ $UID == 0 ]]; then 
     PS1="\[\e[1;31;40m\]\[email protected]\h \W\[\e[0m\]\$ " 
else 
     parse_git_branch() { 
       git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' 
     } 
     PS1="\[email protected]\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ " 
fi