我的默认用户帐户已zsh
设置为首选 shell。我已经在.zshrc
文件中做了一些配置,一切都很好。
然而,一旦我root
通过运行sudo -s
,我就得到了一个zsh
没有任何配置的实例。我现在可以运行source ~/.zshrc
以恢复我的别名等,但我宁愿将其作为默认操作。等等.vimrc
也是如此。
我怎样才能做到这一点?
移动.zshrc
和其他配置是/root/
不可能的,因为我不是sudoer
这个系统上唯一的人。
答案1
根据 sudo 配置,它可能会保持HOME
环境变量指向您的主目录或使其指向目标用户的主目录。无论您运行sudo -s
或sudo 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