私が実行しているUbuntuサーバーでは、ユーザーに便利なエイリアスと機能を追加するためにファイル/etc/bash.bashrc
としてカスタマイズを追加しました。これらすべてが私のアカウントで正しく機能します。.sh
/etc/profile.d
su
ただし、またはを介して別のアカウント(自分のアカウントと同じグループに属するアカウントを含む)にログインしても、ssh
これらのカスタマイズは読み込まれません。手動で実行すると. /etc/profile
問題は解決しますが、私が知っている限り、対話型ログインシェルが起動したら自動的にこれを行う必要があります。echo $0
すべてのアカウントで実行するとthisが返さ-bash
れるので、実際にはこのようなシェルにあるとします。
そうでなければ、なぜこれが起こり、どのように解決できますか?
答え1
私も同じ問題があります。ファイルを確認し/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
だから我々はちょうど確認することができます。ファイル(Ubuntu 18)。名前を変更した/etc/profile.d/conda
ので、/etc/profile.d/conda.sh
期待どおりに動作します!
答え2
~/.profile
何でも~/.bashrc
実行されます。後ろに /etc/profile
そして/bash.bashrc
。したがって、最初に設定された別名または変数が同じ名前を共有する場合は、後者に設定された別名または変数を置き換えます。
私たちが直面している具体的な問題は、サーバーを移行しながら、重要なファイルをバックアップして新しいサーバーに再度アーカイブするようにユーザーに依頼したことです。彼らがこれを実行したときに~/.bashrc
「Pythonを操作するためのトリック」(つまり、ディレクトリを含めるようにPATH変数を設定する方法anaconda
)と、以前のサーバーのカスタマイズで私が自分のコンピュータで行ったことがあったので、それを含めました。これは私が設定した新しいエイリアス(alias source activate
、beenなど)とconda activate
競合し、conda 4.4以降は手動で設定する代わりにPATH変数conda.sh
に追加する必要があります。/etc/profiles.d/