一部のプログラムをインストールしたら、すべてのユーザー用の非ログインシェルをシステムに/opt/xxx/bin
追加したいと思います。どうすればいいですか?/opt/xxx/bin
$PATH
答え1
PAMを使用するDebianやその他のシステムでは、(ほとんどの場合)これを行いPATH
ます/etc/environment
。pam_env
モジュール(auth
セクションまたはセクションsession
); Debian ではすべてが必要です (少なくともログインしてコマンドを実行する方法を提供すること)。
答え2
/etc/profile
Joeが言ったように、デフォルトのパスを設定できますが$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
reverse は$HOME/profile
プライマリシェルでは実行されませんが、軽量dash
バリアントはbash
起動プロセスの負荷を軽減します。
答え3
serverfaultで最高の答えを見つけました。ザイルズ:
Debian のすべてのユーザーに対して PATH を設定するには?
PATHを設定する最初の場所は、
/etc/login.defs
rootの設定と他のすべての人の設定です。環境変数を定義できる別の場所はです
/etc/environment
。これらの設定はすべての人に適用されます(任意のシェルコードを書くことはできません)。環境変数を定義できる3番目の場所は、任意のシェル
/etc/profile
コードを書くことができる場所です。ユーザー固有の設定が必要な場合は、そのユーザー固有のファイルを使用できます~www-data/.profile
。ただし、これはコンソール対話型ログインでのみ機能します。特に明示的にソースが提供されていない限り、cronジョブでは機能しません/etc/profile
。ユーザーのcrontabでのみこの設定が必要な場合は、
PATH
crontabの先頭に書き込むことができます。完全なリスト(PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin
)が必要であり、変数置換は使用できません(PATH=$PATH:/usr/local/zend/bin
ここでは機能しません)。
答え4
デフォルトパスは/ etc / profileで設定できます。
しかし、Ubuntuシステムを見てみると/ etc / environmentに設定されています。