このようにコンテキストを切り替える方法はありますか?
私の特別なケースでは、スクリプトは特定のタスクを実行するためにsudo権限のみを必要とするインストーラのインストール後のスクリプトでした。必要ログインしたユーザーは、スクリプトの最後でLaunchAgentを実行します。
このエージェントがsudo権限で起動すると、ユーザー固有のログや他のリソース(ユーザーディレクトリにあります)へのパスが歪みます。
答え1
これは私にとって効果的です。
USER_NAME=$(printf '%s' "${SUDO_USER:-$USER}")
sudo -u $USER_NAME <command-to-exec-in-nonroot-context>