PATHの目的は何ですか?
それはあなたのシェルがプログラムを見つける方法です。あなたが入力するとls
、例えば、呼ばれるプログラム実行しているls
に住んでいる/bin
のMac OS Xを含む、ほとんどのシステムではあなたのシェルは、理由だけでは見つけることができるということ/bin
ですPATH
。
シェルはプログラムをPATH
左から右の順に検索します。ls
システムに2つのプログラムがあり、それらのディレクトリが両方ともにあるPATH
場合は、の最初にリストされているディレクトリにあるプログラムが見つかりますPATH
。
/ etc / pathsと〜/ .bash_profileの違いは何ですか
設定されたパスは、Mac OS Xのすべてのシェルで起動時に/etc/paths
追加されPATH
ます。
~/.bash_profile
は起動時にBashによって実行されるいくつかのシェルスクリプトの1つにすぎず、これらのいくつかはBash固有のものです。したがって、シェルを変更するtcsh
とzsh
、Mac OS Xも出荷され、たとえば、変更は/etc/bashrc
新しいシェルには適用されません。
また、ユーザーごとの/etc/paths
システムレベルの構成ファイルです~/.bash_profile
。Macに複数のインタラクティブユーザーを設定して/etc/paths
いる場合、全員に表示したくないディレクトリにディレクトリを追加する必要はありませんPATH
。同じことがにも当てはまりますが/etc/bashrc
、Bashをシェルとして使用するユーザーにのみ適用されます。
PATHと$ PATHと$ {PATH}の違いは何ですか?
変数を設定しているときは、通常、シギルなしで変数が表示されます。環境変数を文字列にFOO=bar
設定しFOO
ますbar
。と入力するset
と、シェルはすべての環境変数を表示します。その場合、シギルなしの変数も表示されます。
$PATH
そして${PATH}
、通常は交換可能です。現在のPATH
変数の値をインプレースで展開するようにシェルに指示します。違いは、それらをどのように、どこで使用するかに関係しています。例えば:
$ FOO=bar
$ echo $FOO
bar
$ echo $FOOx
$ echo ${FOO}x
barx
2番目のecho
コマンドでは、シェルFOOx
は存在しないと呼ばれる変数を出力するようにシェルに要求するため、何も出力しません。シェルは存在しない変数を空として扱います。3番目echo
は中括弧の構文を使用しているため、FOO
変数を要求していること、およびx
直後に出力したい別の文字であることをシェルが確認できます。
ちなみに、中括弧なしで同じ効果を得る別の方法があります。
$ echo "$FOO"x
barx
環境変数は二重引用符で展開され、引用符x
は変数の展開からを分離するので、シェルは正しいことを行います。
FOO
ここでは、わかりやすくするために環境変数を使用しています。上で書いたものはすべて、にも適用されPATH
ます。これは、単なる別の環境変数だからです。例のテキストは、はるかに長くなります。
PATHのエクスポートとはどういう意味ですか?いつ輸出しますか?
上記のFOO
例では、別のプログラムを実行すると、FOO
変数がエクスポートされないため、変数は表示されません。それはその1つのシェルインスタンス内にのみ存在します。
$ echo $FOO
bar
$ bash
$ echo $FOO
$ exit
$ export FOO
$ bash
$ echo $FOO
bar
bash
既に使用しているシェルの下で新しいシェルを最初に実行してから、の値を表示しようとするとFOO
、FOO
サブプログラムが表示できるようにエクスポートされなかったため、空白が表示されます。次に、2番目のbash
インスタンスを終了してエクスポートし、bash
再度実行すると、2番目のインスタンスにの値が表示されFOO
ます。
あなたは使いexport
ますが、サブプログラムはシェルで設定した値を確認したいとき、あなたはそれが起こるしたくない場合にそれを使用しないでください。
通常、シェルスクリプトで一時変数をエクスポートすることはありません。シェルスクリプトからプログラムが実行される方法を変更しないようにするためです。
他の質問には答えません。一度に1つだけ質問することになっています。彼らは漠然と関連しているので、私はこれだけ答えました。他のすべては別の質問に属しています。