Debian のすべてのユーザーに対してログインしていないシェルのシステム $PATH パスを追加する方法

Debian のすべてのユーザーに対してログインしていないシェルのシステム $PATH パスを追加する方法

一部のプログラムをインストールしたら、すべてのユーザー用の非ログインシェルをシステムに/opt/xxx/bin追加したいと思います。どうすればいいですか?/opt/xxx/bin$PATH

答え1

PAMを使用するDebianやその他のシステムでは、(ほとんどの場合)これを行いPATHます/etc/environmentpam_envモジュール(authセクションまたはセクションsession); Debian ではすべてが必要です (少なくともログインしてコマンドを実行する方法を提供すること)。

答え2

/etc/profileJoeが言ったように、デフォルトのパスを設定できますが$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/.profilereverse は$HOME/profileプライマリシェルでは実行されませんが、軽量dashバリアントはbash起動プロセスの負荷を軽減します。

答え3

serverfaultで最高の答えを見つけました。ザイルズ:

Debian のすべてのユーザーに対して PATH を設定するには?

PATHを設定する最初の場所は、/etc/login.defsrootの設定と他のすべての人の設定です。

環境変数を定義できる別の場所はです/etc/environment。これらの設定はすべての人に適用されます(任意のシェルコードを書くことはできません)。

環境変数を定義できる3番目の場所は、任意のシェル/etc/profileコードを書くことができる場所です。ユーザー固有の設定が必要な場合は、そのユーザー固有のファイルを使用できます~www-data/.profile。ただし、これはコンソール対話型ログインでのみ機能します。特に明示的にソースが提供されていない限り、cronジョブでは機能しません/etc/profile

ユーザーのcrontabでのみこの設定が必要な場合は、PATHcrontabの先頭に書き込むことができます。完全なリスト(PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin)が必要であり、変数置換は使用できません(PATH=$PATH:/usr/local/zend/binここでは機能しません)。

答え4

デフォルトパスは/ etc / profileで設定できます。

しかし、Ubuntuシステムを見てみると/ etc / environmentに設定されています。

関連情報