PATH
に新しいパスをどこに追加する必要があるのか疑問に思います 環境変数。これは.bashrc
を編集することで実現できることを私は知っています (たとえば)しかし、これを行う方法は明確ではありません。
このように:
export PATH=~/opt/bin:$PATH
またはこれ?
export PATH=$PATH:~/opt/bin
承認された回答:
簡単なもの
PATH=$PATH:~/opt/bin
または
PATH=~/opt/bin:$PATH
〜/ opt / bin
を追加するかどうかによって異なります 最後(複数のディレクトリに同じ名前のプログラムがある場合は、他のすべてのディレクトリの後に検索されます)または最初(他のすべてのディレクトリの前に検索されます)。
同時に複数のエントリを追加できます。 PATH =$ PATH:〜/ opt / bin:〜/ opt / node / bin
または注文のバリエーションは問題なく機能します。 export
を入れないでください 追加の複雑さがあるため、行の先頭にあります(以下の「bash以外のシェルに関する注意」を参照してください)。
PATH
の場合 多くの異なるコンポーネントによって構築されるため、エントリが重複する可能性があります。 Unixによって検出されるホームディレクトリパスを追加する方法を参照してください。どのコマンドですか?重複を追加または削除しないように、awkコマンドを使用して重複する$PATHエントリを削除します。
一部のディストリビューションは自動的に〜/ bin
を配置します ちなみに、PATHに存在する場合は、その中にあります。
どこに置くか
PATH
を変更する行を入力します 〜/ .profile
内 、または〜/ .bash_profile
それがあなたが持っているものなら。
〜/ .bash_rc
に注意してください どのプログラムでも読み取られず、〜/ .bashrc
bashのインタラクティブインスタンスの設定ファイルです。 〜/ .bashrc
で環境変数を定義しないでください 。 PATH
などの環境変数を定義する適切な場所 〜/ .profile
です (または〜/ .bash_profile
bash以外のシェルを気にしない場合)。それらの違いと、どちらを使用すればよいかをご覧ください。
/ etc / environment
に入れないでください または〜/ .pam_environment
:これらはシェルファイルではないため、 $ PATH
のような置換を使用することはできません そこで。これらのファイルでは、変数をオーバーライドすることはできますが、変数に追加することはできません。
一部のシステムスクリプトの潜在的な問題
export
は必要ありません 変数がすでに環境内にある場合:変数の値の変更は環境に反映されます。¹ PATH
ほとんどの場合、環境内にあります。すべてのUNIXシステムは、非常に早い段階で設定します(通常、実際には最初のプロセスで)。
ログイン時に、 PATH
に頼ることができます すでに環境にあり、すでにいくつかのシステムディレクトリが含まれています。ある種の仮想環境のセットアップ中に早期に実行される可能性のあるスクリプトを作成している場合は、 PATH
を確認する必要があります。 空ではなく、エクスポートされます:if PATH
まだ設定されていない場合は、 PATH =$ PATH:/ some / directory
のようになります。 PATH
を設定します :/ some / directory
へ 、および先頭の空のコンポーネントは、現在のディレクトリ(。:/ some / directory
など)を意味します。 。
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi
bash以外のシェルに関する注意
bash、ksh、zshでは、 export
は特別な構文であり、両方の PATH =〜/ opt / bin:$ PATH
およびexportPATH =〜/ opt / bin:$ PATH
でも正しいことをしなさい。ダッシュ( / bin / sh
)などの他のBourne/POSIXスタイルのシェル 多くのシステムで)、 export
は通常のコマンドとして解析されます。これは、2つの違いを意味します。
-
〜コード> 割り当てを除いて、単語の先頭でのみ解析されます(詳細については、Unixによって検出されるホームディレクトリパスを追加する方法を参照してください)。
-
$ PATH
PATH
の場合、外側の二重引用符は壊れます 空白または[*?
が含まれています 。
したがって、ダッシュのようなシェルでは、 export PATH =〜/ opt / bin:$ PATH
PATH
を設定します リテラル文字列〜/ opt / bin /:
その後にPATH
の値が続きます 最初のスペースまで。 PATH =〜/ opt / bin:$ PATH
(裸の割り当て)引用符を必要とせず、正しいことを行います。 export
を使用する場合 ポータブルスクリプトでは、 export PATH ="$ HOME / opt / bin:$ PATH"
を記述する必要があります 、または PATH =〜/ opt / bin:$ PATH;エクスポートパス
(または PATH =$ HOME / opt / bin:$ PATH; export PATH
export var =value
を受け入れなかったBourneシェルへの移植性のために チルダ拡張は行いませんでした。
¹これはBourneシェルには当てはまりませんでしたが(実際のBourneシェルのように、最新のPOSIXスタイルのシェルではありません)、最近このような古いシェルに遭遇する可能性はほとんどありません。