Ubuntu 22.04 でユーザーを切り替えても環境設定が反映されない

Ubuntu 22.04 でユーザーを切り替えても環境設定が反映されない

私の Ubuntu 22.04 システムには、Alice と Sally という 2 人のユーザーがいます。Alice は .profile ファイルで環境変数を設定しており、それらは正常に動作しています。しかし、Alice がコマンド sudo -s -u sally を使用してユーザー Sally に切り替えると、Alice の .profile の環境設定が Sally に反映されません。

alice@dev7 192 0 % echo $appuser     
alice
alice@dev7 193 0 % env  | grep appuser
appuser=alice
alice@dev7 194 0 % sudo -s -u sally
sally@dev7 196 0 % echo $appuser

sally@dev7 197 0 %

.profile ファイルが Sally のホーム ディレクトリに存在し、必要な構成になっていることを確認しました。Alice が sudo -s -u sally を使用して自分のユーザーに切り替えたときに、環境変数が Sally に適用されない理由を理解したいと思います。この方法でユーザーを切り替えるときに環境設定が引き継がれるようにするには、追加の手順や構成が必要ですか?

答え1

~/.profileは、ユーザー ログイン時にソース化されます...したがって、次のように、ターゲット ユーザーのパスワード データベース エントリで指定されたシェルをログイン シェルとして実行するには、sudo -u userを使用する必要があります。-i, --login

sudo -i -u sally

知らせ-i:とオプションの両方を指定することはできません-s

ただし、現在のユーザーのシェルの選択を保持したい場合は、sudo su ...次のように使用できます。

sudo su - sally --shell "$SHELL"

または、次のようにシェルの選択を指定します/bin/bash

sudo su - sally --shell /bin/bash

対象ユーザーのパスワード データベース エントリで指定されたシェルに関係なく。

関連情報