セッション単位のgit環境変数を設定するために、以下の関数定義をBashで使用しようとしています。私がこれをソースした場合、私のBashブロックは、CTRL + Dでキルできますし、使用できないシェルが戻ってきました(コマンドはありません)。私は、読んで何かがブロックされていると思います。元のバージョンには "while true"が含まれていましたが、それはCPUを壊滅させてさらに悪化させました。 したがって、2つの質問が発生します。readで関数の定義がシェルをブロックしています
- この機能を正しく動作させることの目標にはどのように到達できますか?
なぜ関数を定義するだけで問題をポップアップするのですか?
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]" }
それを再現できません。 – hek2mgl
また、構文エラーがあります: 'if [" $ UNAME "= user1] || ["$ UNAME" = user2] '; 。 '-o'は内部で' [...] '使用されることになっている(廃止された)演算子です。しかし、 'git'に*コマンドごとの名前の入力を促すかどうかを考えるのは良い考えです。特に、これは、プロンプトを表示するたびに実行しようとしている 'git branch'には適用されません。 – chepner
ええ、何かが再現可能でないとき、それは私の場合は問題のソースであったユーザーの環境です(以下の私の答えを参照してください)。 –