su или sudo сохранение / удаление определенных переменных среды

Я хотел бы иметь возможность войти в систему как другой пользователь и сохранить большинство, но не всю среду. В частности, я хотел бы установить $HOME на правильное значение для нового пользователя, но, возможно, все остальное. Если я использую sudo -E , вся моя среда останется прежней, в том числе $HOME . Если я использую sudo -E su , он почти работает, но по какой-то причине не сохраняет $ZDOTDIR , что является, в частности, одной из переменных, которые я хочу сохранить.

Кто-нибудь знает удобное решение этого вопроса или почему одна из немногих переменных, которые стираются с помощью sudo -E su это $ZDOTDIR ? Благодарю.

  • Какая потребность в команде `fakeroot` в Linux?
  • Измените право собственности на файл у пользователя на другого пользователя, который первый пользовательский контроль
  • sudo -E env PATH = $ PATH
  • Galera + systemd: wsrep_notify_cmd терпит неудачу с sudo (невозможно изменить в sudoers gid: операция не разрешена)
  • Могу ли я ограничить sudoer nopasswd каталогом?
  • debian не принимает административный пароль
  • Я изменил / etc / sudoers, и теперь я не могу работать как sudo
  • Solaris sulog при использовании sudo
  • One Solution collect form web for “su или sudo сохранение / удаление определенных переменных среды”

    Поскольку настройки sudoers различаются между ОС, трудно предсказать, что сработает для вас.

    sudo -EH переключатель H пытается установить $ HOME значение целевого пользователя, но это не сохранит $ ZDOTDIR.

    Или добавьте строку ниже к концу sudoers, используя visudo. Это говорит sudo, чтобы сохранить переменные, перечисленные в текущей среде. В этом случае вы использовали бы sudo без переключателей.

     Defaults env_keep += "ZDOTDIR OTHERVAR1 OTHERVAR2 [...]" 
    Linux и Unix - лучшая ОС в мире.