GNU/Linux >> Linux の 問題 >  >> Linux

パスをパスに正しく追加する方法は?

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シェルへの移植性のために チルダ拡張は行いませんでした。

関連:Centos –正しい新しいバージョンのNode.jsがCentOS 7にインストールされないのはなぜですか?

¹これはBourneシェルには当てはまりませんでしたが(実際のBourneシェルのように、最新のPOSIXスタイルのシェルではありません)、最近このような古いシェルに遭遇する可能性はほとんどありません。


Linux
  1. Yumリポジトリを追加する方法

  2. phpMyAdminで複数のホストを追加する方法

  3. Linuxでユーザーをグループに追加する方法

  1. DBUS_SESSION_BUS_ADDRESS をエクスポートする方法

  2. LinuxでChromedriverをPATHに追加するには?

  3. ldd でパスが見つからない、追加方法

  1. LinuxでPATHにディレクトリを追加する方法[例付き]

  2. $ pathにきれいに追加する方法は?

  3. Linux – Lddがパスを見つけられない、追加する方法は?