私が実行しているubuntuサーバーでは、/etc/bash.bashrc
にカスタマイズを追加し、.sh
に/etc/profile.d
ファイルとしてカスタマイズして、ユーザーに役立つエイリアスと機能を追加しました。それらはすべて私のアカウントで正しく実行されます。
ただし、su
またはssh
を介して、他のアカウント(私のアカウントと同じグループのアカウントを含む)にログインすると、これらのカスタマイズは読み込まれません。 . /etc/profile
を手動で実行するとうまくいきますが、これはインタラクティブなログインシェルで起動時に自動的に行われるはずです。すべてのアカウントからecho $0
を実行すると-bash
が返されるので、それらは事実上そのようなシェルにあると思います。
なぜ他にこれが起こっているのでしょうか、どうすれば修正できますか?
~/.profile
および~/.bashrc
のすべてが実行されますafter/etc/profile
および/bash.bashrc
。そのため、最初に設定されたエイリアスまたは変数は、同じ名前を共有する場合、後者に設定されたものよりも優先されます。
これが役立つ人のために:私が直面していた特定の問題は、サーバーを移行しているためであり、ユーザーに重要なファイルをバックアップして新しいサーバーに戻すようにユーザーに依頼しました。彼らがこれを行ったとき、「pythonを機能させるトリック」(つまり、PATH変数にanaconda
ディレクトリを含めるように設定すること)があったため、~/.bashrc
を含めました)、および以前のサーバーでコンピューターに対して行ったカスタマイズの一部。これは、設定している新しいエイリアス(たとえば、source activate
のエイリアスで、conda activate
になった)と競合していました。 、およびconda 4.4以降、PATH変数を手動で設定するのではなく、conda.sh
を/etc/profiles.d/
に追加する必要があります。
同じ問題が発生します。 /etc/profile
ファイルの確認中に解決策が見つかりました
...
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
したがって、チェックは。shファイルのみです(Ubuntu 18)。 /etc/profile.d/conda
の名前を/etc/profile.d/conda.sh
に変更しましたが、正常に機能します!