2016-06-16 8 views
0

私はgit bashとシェル環境についてもっと学びたいと思っています。私は現在のプロファイルでこの2行を見てきました。私はこれらの正確な行のためにgoogledをしたが、私は彼らが何をするか説明する何かを見つけることができなかった。git bashを使い始めると、これらの行は.bash_profileで何を意味していますか?

test -f ~/.profile && . ~/.profile 
test -f ~/.bashrc && . ~/.bashrc 
+0

あなたは 'man test'を試してみましたか?(2つ目は難しいと思いますが)' man bash'は 'source'を探します - ' .'は 'source'の省略形です。 –

+0

最初のコマンドラインは '[-f〜/ .profile] &&と書くこともできます。 〜/ .profile';最後の引数が ']'になることを除いて 'test'の同義語である '[' 'コマンド(' 'テスト' 'はしません)にもっと精通しているかもしれません。そして、 'source'は' 'と書かれた長年の方法ですが、そうでなければ同等です。 'if [-f〜/ .profile];を使うこともできます。次に。 〜/ .profile;同じ意味の「fi」である。そして、あなたは '['、 '['、...の代わりに[['を使ってコードを書くことができました。 –

+0

私はWindows上で使用しているgit bashにmanコマンドはありません。ありがとう。 –

答えて

5
  • test -f FILEチェックFILEが存在し、それがファイルではなくディレクトリである場合。
  • . FILEは、現在のシェルでFILEのコマンドを実行します。それは組み込みのsourceの同義語です。
  • 前のコマンドが正常を終了し、以上の技術的にそうでなければ0を返す、&&次のコマンドを実行しない場合&&続くコマンドは実行されます。 ~/.profileが存在するのであれば

test -f ~/.profile && . ~/.profileはチェックして、それが存在する場合、それが現在のシェルでそのファイルを実行します。

+0

ありがとう、私はそれが私のために物事をより明確にしたと思う。 –

+2

'-f'は、ディレクトリやブロックデバイスなどではなく、存在するかどうかを実際にテストします。 '-e'は存在するかどうかをテストするだけです –

+0

@EricRenoufありがとう、私は答えを更新します。 – emnoor

0

testは、さまざまなことをテストするために使用できます。 -fスイッチは、ファイルの存在をチェックします。

したがって、test -f ~/.profileがゼロ(成功を意味します)を返した場合、~/.profileがソースになります。

testの詳細は、マニュアルページのman testを参照してください。

+0

ありがとうronak、私はWindows用のgitのmanコマンドにアクセスできないが、あなたの答えは役に立ちました。&&はファイルを作成させるのですか? –

0

より使い慣れた方法で書くことができます。

if [[ -f ~/.profile ]];then 
    . /.profile 
else 
    : 
fi 

OR 

if [[ -f ~/.bashrc ]] 
then 
    . ~/.bashrc 
fi 

OR 

if [[ -f ~/.bashrc ]];then . ~/.bashrc;fi 

つまり、ファイルが存在する場合は実行します。 (そうでない場合は何もしないでください)

else部分は省略できます。 :は、Pythonでpassのように動作します。 [[および]]のスペースが常に必要です。 bashではインデントが必須ではありません。

関連する問題