2

UNIX システムの .profile ファイルの例で、PATH 変数に値を指定した後、たとえば export されることがわかりPATH=$PATH:.ますexport PATH

私の質問は2です:

  1. 値を与えた後に PATH をエクスポートしないとどうなりますか?
  2. PATH=$PATH:.現在のディレクトリが PATH 変数に追加されることを意味します。しかし、これは1回だけですか?ホームディレクトリを追加するだけですか、それともディレクトリを変更するたびにPATHに追加されますか?
4

3 に答える 3

4

をエクスポートしないPATHと、別のプログラム (またはサブシェル) を開始したときに、そのプログラムはあなたが持っているものと同じ値を$PATH認識しません。エクスポートすると、表示される値が、シェルが生成する子プロセスによっても表示されることを意味します。

に追加.しても、追加したPATHときの現在のディレクトリ名には展開されません。のまま.です。したがって、たまたま現在のディレクトリが、プログラムを実行しようとしたときに実行可能ファイルを検索するディレクトリになります。

于 2013-07-24T07:50:32.733 に答える
3
  1. おそらく何もありません。変数がエクスポートされると、再割り当てされてもエクスポートされ続けます。.profileまた、PATHはソース時に既にエクスポートされていることが期待されます。ただし、念のため、とにかくエクスポートされます。変数がエクスポートされていない場合、現在のシェルで引き続き機能しますが、子プロセスには継承されません。
  2. .それが何であれ、現在のディレクトリを意味しますが、ディレクトリの実際の名前に展開されることはありません(pwdバッククォートで囲まれた使用のため)。ディレクトリを変更すると、現在のディレクトリがパスになります。これは、他の非 UNIX ライクなオペレーティング システム (Windows および DOS) の動作と似ていますが、一般にセキュリティ リスクと見なされます。最小化するには、例のように、少なくとも PATH の最後に配置します。
于 2013-07-24T07:55:28.500 に答える
0

変数をエクスポートしない場合、実行中のスクリプトに対してローカルのままになります。つまり.profile、この場合です。つまり$PATH、他の場所を参照すると、空になります。

変数は、ステートメントが実行されたとき、つまり が実行されたときにのみ設定され.profileます。通常、これは (シェルの起動時) 1 回だけ発生し、ディレクトリを変更したときは発生しません。

于 2013-07-24T07:50:30.203 に答える