我在 Mac OSX 上執行 zsh,有時想在終端機中切換到 root 使用者。
我想保留我的普通用戶的所有點文件、環境路徑配置和腳本,並以 root 身份執行很多操作。
我一直在運行sudo bash
orsudo zsh
作為切換到 root 的簡單方法,但這有一個缺點,就是不能運行我的普通用戶的所有 zsh 配置。
“成為 root ”來運行一系列命令並保留普通用戶的所有配置/環境設定的最佳方法是什麼?
例如,我為普通用戶自訂了以下內容,並希望 root 用戶也可以使用它們:
- .zshrc
- ~/bin
- .別名
- vim模式輸入
編輯:請注意,我知道我不應該經常「以 root 身份運行」。但我不這麼認為。但有時我確實必須以 root 身份不斷運行一些簡單的命令,並且我只是為了這種用途而打開 tmux 拆分,而不是其他用途。
答案1
若要取得常用的點文件,請確保sudo
不會更改HOME
環境變數。是否發生這種情況取決於 sudo 的編譯時和運行時配置。要保留HOME
,請編輯該sudoers
文件(運行visudo
,切勿直接編輯此文件!)並確保它包含
Defaults !always_set_home, !set_home
Defaults env_keep+=HOME
(根據編譯選項,其中一些可能是不必要的。)當然不要運行sudo -i
.
不過,請避免以 root 身分做太多事情。例如,不要以 root 身分執行編輯器,而是使用sudoedit
.
答案2
您幾乎肯定不想這樣做。
如果您的根用戶指向普通用戶的點文件,那麼這些點文件的權限可能會發生變化,從而使普通用戶的事情變得複雜。
您可以做的是在每次登入時將檔案複製到根用戶主目錄。
在 ~/.zshenv(對於 root 使用者)的某個位置複製這些檔案並調整它們的權限。這樣您就可以保持環境的正常運行,並開始使用您的自訂設定。
就我個人而言,如果我想執行多個 root 命令,sudo su -
但您可以嘗試sudo -E su -p
保留使用者的環境。
強制警告!
跑步從來都沒有充分的理由sudo su
。很遠更好的sudo
在每個命令之前運行。也就是說,我sudo su
有時會這樣做。但一般規則是不要sudo su
。