2017-01-31 6 views
0

セッション単位のgit環境変数を設定するために、以下の関数定義をBashで使用しようとしています。私がこれをソースした場合、私のBashブロックは、CTRL + Dでキルできますし、使用できないシェルが戻ってきました(コマンドはありません)。私は、読んで何かがブロックされていると思います。元のバージョンには "while true"が含まれていましたが、それはCPUを壊滅させてさらに悪化させました。 したがって、2つの質問が発生します。readで関数の定義がシェルをブロックしています

  1. この機能を正しく動作させることの目標にはどのように到達できますか?
  2. なぜ関数を定義するだけで問題をポップアップするのですか?

    function git() { 
        echo "Running BETTER git..." 
        if [ -z "$GIT_COMMITTER_NAME" ]; then 
         echo -n "Git User: " 
         read -e UNAME 
         if [ "$UNAME" == "user1" ] -o [ "$UNAME" == "user2" ]; then 
          echo "Hello $UNAME, you will be set as committer for this git session" 
         else 
          echo "Invalid User" 
         fi 
         GIT_COMMITTER_NAME=$UNAME 
         export GIT_COMMITTER_NAME 
         [email protected] 
         export GIT_COMMITTER_EMAIL 
         GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME 
         export GIT_AUTHOR_NAME 
         GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL 
         export GIT_AUTHOR_EMAIL 
        fi 
        echo " using git user: $GIT_AUTHOR_NAME/$GIT_AUTHOR_EMAIL" 
        /usr/bin/git "[email protected]" 
    } 
    
+0

それを再現できません。 – hek2mgl

+2

また、構文エラーがあります: 'if [" $ UNAME "= user1] || ["$ UNAME" = user2] '; 。 '-o'は内部で' [...] '使用されることになっている(廃止された)演算子です。しかし、 'git'に*コマンドごとの名前の入力を促すかどうかを考えるのは良い考えです。特に、これは、プロンプトを表示するたびに実行しようとしている 'git branch'には適用されません。 – chepner

+0

ええ、何かが再現可能でないとき、それは私の場合は問題のソースであったユーザーの環境です(以下の私の答えを参照してください)。 –

答えて

0

ただ、第二の問題は、問題の根本に自分自身をもたらした尋ねる:なぜ、ちょうど関数の定義は、トラブルを引き起こしていますか? gitの実際が私の環境で呼び出さあるので:

export PS1=$Color_Off'$(git branch &>/dev/null;\ 

私は(上記単に抽出物である)PS1-設定を使用しています、すべてのプロンプトで、gitのコマンドは、このように私の定義された関数を呼び出し、発行されるようにします。現時点では、関数の名前を "git_new_session"に変更すると、すでに問題が解決されています。それでも、システム上の(技術的な)ユーザとの最初のgitの使用時に自動的に呼び出されたかったので、これはちょっと不便でしたので、gitコミットの著者として私たちの名前を設定しなければなりません。もっと洗練された解決策があればフォローアップするかもしれません。

EDIT:OK、私は/etc/bash_completion.d/git-promptの "git"を "/ usr/bin/git"に置き換えることで修正できました。これで、 "git"のエイリアスができ、正しく動作します。

+0

プロンプトで '/ usr/bin/git'を使うこともできます。これは関数ではなく、バイナリを実行します。 – hek2mgl

関連する問題