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

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

PATH環境変数に新しいパスを追加する必要があることを知りたいです。たとえば、エディタでこれを行うことができることを知っていますが、これを.bashrc行う方法は明確ではありません。

この方法:

export PATH=~/opt/bin:$PATH

それともこれ?

export PATH=$PATH:~/opt/bin

ベストアンサー1

何か簡単なもの

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ではなくzshの場合は入れてください~/.zprofile。)

構成ファイルはログインシェルから読み取られるため、次回のログイン時にのみ適用されます。 (一部のシステムでは、ログインシェルを読み取るように端末を設定します。この場合は新しい端末ウィンドウを起動できますが、設定は適用されます。)端末を介して実行されたプログラムにのみ適用され、PATHすべてのプログラムを設定する方法はシステムによって異なります。 。 )

~/.bash_rcどのプログラムもこれを読まないことに注意してください。これは~/.bashrcbashの対話型インスタンスの設定ファイルです。~/.bashrc環境変数を定義する正しい場所は定義しないでくださいPATH~/.profileまたは~/.bash_profilebash以外のシェルに興味がない場合)。バラよりこれらの違いは何ですか?どちらを使うべきですか?

/etc/environmentまたはに入れないでください。これはシェルファイルではないため、代替は使用~/.pam_environmentできません。$PATHこれらのファイルでは変数を上書きすることができ、追加することはできません。

一部のシステムスクリプトの潜在的な複雑さ

変数がすでに環境にある場合は必要ありませんexport。変数値に対するすべての変更が環境に反映されます。PATHほぼ常に環境では、すべてのUNIXシステムはこれを最初に設定します(実際には通常最初のプロセスで)。

PATHログイン時にすでに環境にあり、含まれているいくつかのシステムディレクトリを使用できます。ある種の仮想環境を設定するときに事前に実行できるスクリプトを作成する場合は、スクリプトが空でなくエクスポートされていることを確認しPATHたい場合があります。PATHまだ設定されていない場合は、次のようになりますPATH=$PATH:/some/directoryPATHに設定します:/some/directory。先頭の空のコンポーネントは現在のディレクトリ( like .:/some/directory)を表します。

if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi

Bash以外のシェルに関する注意

bash、ksh、zshではexport構文は特別で、両方とも正しい操作をPATH=~/opt/bin:$PATH行います。ダッシュ(多くのシステムexport PATH=~/opt/bin:$PATHで)などの他のBourne / POSIXスタイルのシェルは通常のコマンドで解析されます。これは2つの違いを意味します。/bin/shexport

したがって、ダッシュなどのシェルでは、リテラル文字列と最初のスペースまでの値に export PATH=~/opt/bin:$PATH設定されます。 (素手で働く)PATH~/opt/bin/:PATHPATH=~/opt/bin:$PATH見積もりは必要ありません。そして正しいことをしてください。を作成したり、export移植可能なスクリプトで使用したい場合(またはチルダ拡張を許可せずに実行するBourneシェルへの移植性のため)が必要です。export PATH="$HOME/opt/bin:$PATH"PATH=~/opt/bin:$PATH; export PATHPATH=$HOME/opt/bin:$PATH; export PATHexport var=value

1 Bourneシェルではそうではありませんでしたが(現代のPOSIXスタイルのシェルではなく実際のBourneシェルのように)、最近ではこの古いシェルに遭遇する可能性が低くなります。

おすすめ記事