一部のプログラムを/opt/xxx/bin
にインストールした後、すべてのユーザーの非ログインシェルの/opt/xxx/bin
をシステム$PATH
に追加します。私は何をすべきか?
PAM(最近のほとんど)を使用するDebianおよびその他のシステムでは、/etc/environment
に環境変数(PATH
を含む)を設定できます。これは pam_env
モジュール(auth
セクションまたはsession
セクションのいずれか)を使用するすべてのログインメソッドで機能します。それらすべて(少なくともログインしてコマンドを実行する方法を提供するもの)である必要があります。
デフォルトのパスは、ジョーが言ったように/etc/profile
で設定できますが、$HOME/.profile
でも設定できます。自分でコンパイルしたパッケージもたくさんあります(共通のプロシージャ./configure --prefix=/opt/<name>
を使用して)/opt
にインストールしました。追加の手間をかけずに/opt/<name>/bin
でバイナリを実行するには
OPTDIR=/opt
for i in $OPTDIR/* ; do
BINDIR=$i/bin
if [ -d $BINDIR ] ; then
if [ -z $PATH ] ; then
PATH=$BINDIR
else
PATH=$BINDIR:$PATH
fi
fi
done
export PATH
私の$HOME/.profile
にあなたの場合は/etc/profile
になります。今後、/opt
にパッケージをインストールしても、パスは自動的に/opt/.*/bin
に追加されるため、$PATH
の関連バイナリにアクセスする必要はありません。
追加のソフトウェアは必ずしも安定している必要はないので、$HOME/.profile
よりも/etc/profile
を優先します。
小さな注意:/etc/.profile
それぞれ$HOME/profile
はデフォルトのシェルではなくdash
によって実行されます。ブートプロセス中の負荷を軽減するbash
の軽量バリアント。
Gilles によるserverfaultで最も優れた答えを見つけました:
DebianのすべてのユーザーのPATHをどのように設定しますか?
PATHが設定される最初の場所は
/etc/login.defs
です。 root用の設定と他のすべての人用の設定があります。環境変数を定義できるもう1つの場所は
/etc/environment
です。これらの設定はすべてのユーザーに適用されます(そこで任意のシェルコードを作成することはできません)。環境変数を定義できる3番目の場所は
/etc/profile
です。そこで任意のシェルコードを書くことができます。ユーザー固有の設定が必要な場合は、対応するユーザーごとのファイル~www-data/.profile
があります。ただし、これはコンソールの対話型ログインにのみ適用されます。特に、明示的に/etc/profile
をソースとしない限り、cronジョブには適用されません。ユーザーのcrontabでその
PATH
設定のみが必要な場合は、crontabの先頭に書き込むことができます。完全なリスト(PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin
)が必要ですが、変数置換は使用できません(PATH=$PATH:/usr/local/zend/bin
はそこで機能しません)。
デフォルトのパスは/ etc/profileで設定できます
しかし、私はちょうど私のUbuntuシステムを探していて、それは/ etc/environmentに設定されています