成为 root 时的源用户配置

成为 root 时的源用户配置

我的默认用户帐户已zsh设置为首选 shell。我已经在.zshrc文件中做了一些配置,一切都很好。

然而,一旦我root通过运行sudo -s,我就得到了一个zsh没有任何配置的实例。我现在可以运行source ~/.zshrc以恢复我的别名等,但我宁愿将其作为默认操作。等等.vimrc也是如此。

我怎样才能做到这一点?

移动.zshrc和其他配置是/root/不可能的,因为我不是sudoer这个系统上唯一的人。

答案1

根据 sudo 配置,它可能会保持HOME环境变量指向您的主目录或使其指向目标用户的主目录。无论您运行sudo -ssudo zsh(同样,取决于 sudo 配置),这可能会有所不同。

要始终保留您的主目录,您可以使用

sudo --preserve-env=HOME

如果 sudo 的配置允许,或者

sudo env HOME="$HOME" zsh

这总是可能的。

您可能想将其设为别名或函数,例如

alias sudo='sudo --preserve-env=HOME'

或者

function sudo {
  if [ $# -eq 0 ]; then
    set env HOME="$HOME" zsh
  fi
  sudo "$@"
}

请注意,某些应用程序将状态文件保存在您的主目录中,您最终可能会得到一些 root 拥有的文件,例如.viminfo.zsh_history。如果只有少数程序有问题,请将它们配置为使用不同的状态文件。例如,我的.vimrc

" Disable viminfo if running as root
if has("unix")
  if system("id -u") == 0
    set viminfo=
  endif
endif

并且(更复杂的版本)在我的.zshrc

if [[ $UID -eq 0 ]]; then
  HISTFILE="${HISTFILE%_history}_root_history"
fi

相关内容