web-dev-qa-db-ja.com

/ etc / profileはユーザー向けではありません

私が実行しているubuntuサーバーでは、/etc/bash.bashrcにカスタマイズを追加し、.sh/etc/profile.dファイルとしてカスタマイズして、ユーザーに役立つエイリアスと機能を追加しました。それらはすべて私のアカウントで正しく実行されます。

ただし、suまたはsshを介して、他のアカウント(私のアカウントと同じグループのアカウントを含む)にログインすると、これらのカスタマイズは読み込まれません。 . /etc/profileを手動で実行するとうまくいきますが、これはインタラクティブなログインシェルで起動時に自動的に行われるはずです。すべてのアカウントからecho $0を実行すると-bashが返されるので、それらは事実上そのようなシェルにあると思います。

なぜ他にこれが起こっているのでしょうか、どうすれば修正できますか?

3
kadu

~/.profileおよび~/.bashrcのすべてが実行されますafter/etc/profileおよび/bash.bashrc。そのため、最初に設定されたエイリアスまたは変数は、同じ名前を共有する場合、後者に設定されたものよりも優先されます。

これが役立つ人のために:私が直面していた特定の問題は、サーバーを移行しているためであり、ユーザーに重要なファイルをバックアップして新しいサーバーに戻すようにユーザーに依頼しました。彼らがこれを行ったとき、「pythonを機能させるトリック」(つまり、PATH変数にanacondaディレクトリを含めるように設定すること)があったため、~/.bashrcを含めました)、および以前のサーバーでコンピューターに対して行ったカスタマイズの一部。これは、設定している新しいエイリアス(たとえば、source activateのエイリアスで、conda activateになった)と競合していました。 、およびconda 4.4以降、PATH変数を手動で設定するのではなく、conda.sh/etc/profiles.d/に追加する必要があります。

0
kadu

同じ問題が発生します。 /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に変更しましたが、正常に機能します!

1
MeneerBij