これは、Linux用のコマンドラインアプリケーションツールを作成しているときに偶然出会った非常に興味深い質問です。残念ながら、SOの回答は他の質問に対する無数の回答の中に隠されているため、PATHを変更したい人のために、SOについて別の質問をすることにしました。プログラム的に。
GrzegorzŻurの回答 別の質問に対しては、それを見事に捉えています。残念ながら、それは他の多くの答えの中に隠されていました。
それを行うには複数の方法があります。実際の解決策は目的によって異なります。
変数値は通常、割り当てのリスト、またはシステムまたはユーザーセッションの開始時に実行されるシェルスクリプトに格納されます。シェルスクリプトの場合、特定のシェル構文を使用する必要があります。
システム全体
/etc/environment
一意の割り当てのリスト。/usr/local/something/bin
などのシステム全体のディレクトリをPATH
変数に追加したり、Java_HOME
を定義したりするのに最適です。/etc/xprofile
X Window Systemセッションの開始中にシェルスクリプトが実行されました。これは、X Window Systemにログインするすべてのユーザーに対して実行されます。/usr/local/something/bin
のようなすべてのユーザーに有効なPATH
エントリに適しています。ファイルは他のスクリプトに含まれているため、ユーザーシェルの構文ではなく、POSIXシェル構文を使用します。/etc/profile
および/etc/profile.d/*
シェルスクリプト。これは、シェルのみのシステムに適しています。これらのファイルはシェルによってのみ読み取られます。/etc/<Shell>.<Shell>rc
。シェルスクリプト。これは単一のシェル固有であるため、不適切な選択です。
また、/etc/environment
はスクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。このファイルにはシステム全体のロケールとパスの設定が格納されているため、ほとんどの場合引用された選択です。 /etc/profile
の使用は推奨されません。 /etc/bash.bashrc
をポイントし、/etc/profile.d
からエントリを収集するためだけに存在します
ユーザーセッション
~/.pam_environment
。一意の割り当てのリスト。すべてのユーザーセッションの開始時に [〜#〜] pam [〜#〜] によって読み込まれ、X Window Systemセッションまたはシェルであるかどうかは関係ありません。HOME
またはPATH
を含む他の変数を参照することはできないため、使用は制限されています。~/.xprofile
シェルスクリプト。これは、ユーザーがX Window Systemシステムにログインしたときに実行されます。ここで定義された変数は、すべてのXアプリケーションに表示されます。PATH
を~/bin
や~/go/bin
などの値で拡張したり、ユーザー固有のGOPATH
またはNPM_HOME
を定義したりするのに最適です。ファイルは他のスクリプトに含まれているため、ユーザーシェルの構文ではなく、POSIXシェル構文を使用します。グラフィカルテキストエディタまたはIDEショートカットで起動すると、これらの値が表示されます。~/.profile
シェルスクリプト。これは、ターミナルまたはターミナルエミュレータから起動したプログラムでのみ表示されます。シェルのみのシステムに適しています。~/.<Shell>rc
。シェルスクリプト。これは単一のシェル固有であるため、不適切な選択です。
一時的な変更の場合:
~$ export PATH=$PATH:~/root/scripts
永続的な変更のために、この行を/etc/environment
ファイルに次のように追加できます。
PATH=$PATH:~/root/scripts