/etc/profile はユーザーには提供されません。

/etc/profile はユーザーには提供されません。

私が実行している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/

関連情報