ルートになるとbashrcファイルを自動的に取得する方法[重複]

ルートになるとbashrcファイルを自動的に取得する方法[重複]

私の職場では、複数のRHELサーバーで複数の人と連携する必要があります。

私は常に一般ユーザーとしてLinuxサーバーにログインします(duh)。私のファイル.bashrcにアドオン/エイリアスを追加するとしましょう。.bashrcrootに上昇しても権限を維持する方法はありますか?変更したときに.bashrc元のユーザーを取得するには、私のコマンド/エイリアスにコマンド/エイリアスを追加しますか?.bashrc

これを行う最良の方法は何ですか?ログインしている他のユーザーには問題はありません。

したがって、ログインしてuser1実行しますsudo su -が、エイリアスと機能はそのままにしてくださいuser1

答え1

ローカルアカウントを使用している場合は、ルートbashrcに追加してください。

if [ -n "$SUDO_USER" ]; then
   OLDHOME="$( getent passwd "$SUDO_USER" | cut -f 6 -d':' )"
   if [ -f "${OLDHOME}/.bashrc" ]; then
      source "${OLDHOME}/.bashrc"
   fi
fi

目的の動作に応じて、既存の定義の前または後に選択されます。

答え2

私のシステムはsudo -sルートシェルを提供しますが、ディレクトリは変更しないので、シェル$HOMEの場合はbash自分のシェルを呼び出すことになります$HOME/.bashrc。 ($HOME簡単な設定sudo -sはで構成可能なオプションなので、ユーザー/etc/sudoersごとに異なる場合があります。とをsudo -s比較してみてくださいsudo -sH。異なる場合は効果がありますが、同じ結果が出る場合は必要です。さまざまなソリューション.)

私はそれぞれのアカウントとルートアカウントにすでに存在する場所に次の行を追加し、毎回ファイル名に基づいて適切な置換が行われるように~/.bashrcテキストを編集しました。~/.profile~/.bash_profile.bash_profile

test -t 2 && echo "> This is $HOME/.bash_profile for ${USER:-unknown}" >&2

roaima私()でログインしてください。

sudo -s
>> This is /home/roaima/.bashrc for root
# _

また私に(roaima):

sudo -sH
>> This is /root/.bashrc for root

roaimaついに私に戻ります():

sudo -i
>> This is /root/.profile for root
>> This is /root/.bashrc for root
# _

関連情報