echo $HOME
私のRed Hatコンピュータで通常のユーザーアカウントを使用してコマンドを実行すると、それが得られます/home/snrub
。コマンドを実行しsudo vim foo.txt
てvimに入力してecho $HOME
ください/root
。/home/snrub
sudoを使用してファイルを編集しても、素晴らしいVimプラグインを解析できるように戻りたいです。 sudoのマニュアルページによると、または-E
オプションは機能するはずですが、orを-H
実行すると、ホーム.vimrcファイルを解析せずに入力すると返されません。sudo -E vim foo.txt
sudo -H vim foo.txt
sudo -EH vim foo.txt
/root
echo $HOME
また、sudoersファイルに次の行を追加して保存してみました。
Defaults env_keep += "HOME"
それでも動作しません。 Vimを実行しsudo vim foo.txt
て入力してもecho $HOME
表示されます/root
。同様に(厳密にVimの問題ではないことを確認するために)入力し、sudo emacs foo.txt
Enterを押してからAlt-Xを入力し、getenv
Enterを押してから入力してHOME
Enterを押します。それでもWill returnが表示されます/root
。どのように返されますか/home/snrub
?
答え1
sudo
セキュリティ対策として、環境変数(TERM、PATH、HOME、MAIL、SHELL、LOGNAME、USER、USERNAME、SUDO_*)のリストをデフォルトで有効なオプションにリセットしてください。 HOMEをユーザーアカウントから環境env_reset
に移行するには、次の手順を実行する必要があります。sudo
sudo ルールで SETENV タグとオプションを使用する
-E
か、特にこの
env_reset
オプションの設定を解除してください。
また、このオプションがオフになっていることを確認してくださいalways_set_home
(デフォルトでは)。
よりsudoers のマニュアルページすべての詳細と対話を確認してください。