2012-03-07 7 views
1

我々が使用する、(のLinux/Ubuntuの上で)新しいgitリポジトリを初期化する場合:"GIT_DIR = myproject.git git init":このコマンドラインがbashで何をしていますか?

# What this doing: 
GIT_DIR=myproject.git git init 
#The above line will output: Initialized empty Git Repo... 

cd myproject.git 
git --bare update-server-info 
cp hooks/post-update.sample hooks/post-update 

最初の行 "GIT_DIR = ...は" 私を混乱させる、bashはENV変数とgitのを取得しますようです最初のプロジェクトを使用して新しいプロジェクトを作成します。誰がこの小さな魔法を説明することができますか?

+3

あなたは、 "どのように" とはどういう意味ですか?シェル文法は、コマンドの環境内で代入が設定されるように指定します。シェルはコマンドラインを解析し、割り当てがあると、コマンドを開始する前にその割り当てを環境内で行います。 –

答えて

2

これはバッシュや他のBourne互換シェルの機能です:

VAR=val cmd 
このようにそれを行います

は、cmdVARvalに設定されており、そうでない場合はシェル自体の環境です。

次のコマンドを実行してみましょう:

printenv 
export FOO=bar 
printenv | grep '^FOO=' 
FOO=baz printenv | grep '^FOO=' 
+0

これは素敵で啓発的な答えです。 –

4

Bourneと互換性のあるシェルでは、変数はexportキーワードなしで割り当てることができます。
実行するプログラムの前に使用した場合、変数は環境
にエクスポートし、そのプログラムに実際の環境変数として表示されます:ENVプログラムを持っているシステムでは

$ VARIABLE=value ./myprogram [arguments] 

、することができます

$ env VARIABLE=value ./myprogram [arguments] 
+2

"Unix shells"と言うことができるかどうかは分かりません。 cshシェルのファミリーはおそらく "Unixシェル"のクラスであると考えられますが、この構文を認識しません。 (cshが忌み嫌いであるかどうかは、全く別の話題です。) –

関連する問題