su 或 sudo 保留/删除某些环境变量

su 或 sudo 保留/删除某些环境变量

我希望能够以其他用户身份登录并保留大部分(但不是全部)我的环境。具体来说,我想$HOME为新用户设置正确的值,但保留其他所有内容。如果我使用sudo -E,我的所有环境都保持不变,包括$HOME.如果我使用sudo -E su,它几乎可以工作,但由于某种原因不保留$ZDOTDIR,这特别是我想保留的变量之一。

有谁知道一个方便的解决方案,或者为什么被擦除的少数变量之一sudo -E su$ZDOTDIR?谢谢。

答案1

由于 sudoers 设置因操作系统而异,因此很难预测什么适合您。

sudo -EHH 开关尝试将 $HOME 设置为目标用户的值,但这不会保留 $ZDOTDIR。

或者使用 visudo 将以下行添加到 sudoers 的末尾。这告诉 sudo 保留当前环境中列出的变量。在这种情况下,您将sudo无需使用开关即可使用。

Defaults        env_keep += "ZDOTDIR OTHERVAR1 OTHERVAR2 [...]"

相关内容