suの実行後にカレントディレクトリを維持したい
su を実行するとカレントディレクトリが変わってしまうので、いまいるディレクトリやeditor 変数をそのままに 別ユーザーになりたい。
sudo -E を使う
sudo にオプションを付ければ、カレントディレクトリなど現在の環境をそのまま維持してsu することができる。
sudo -E su
man sudo から抜粋
-E, --preserve-env 現在の環境変数をそのまま保持するのがユーザの意向だと、セキュリティポリシーに指示する。 ユーザが環境を保持する許可を持っていない場合は、 セキュ リティポリシーがエラーを返すことになるだろう。
/etc/sudoers の設定と密接な関係
環境変数の設定と維持は sudoers の設定と密接な関係にある。
私の場合、sudo 実行時に余計な環境変数を持ち込みたくないのでリセットしている。というかディストリビューションのデフォルトはほとんど場合が環境変数を初期化するはずだ。
sudoers
Defaults env_reset
この設定があれば、 /etc/environment
の設定で環境変数がリセットされるはずだ。
sudoersで環境変数を維持することにする?
sudo -E
を毎回付けるのが面倒な場合は env_reset を消してしまえばいい。
個人用のLinux Desktop だと便利だと思う。 ただ、共有のサーバーなどでこれをやると知らないあいだに alias 書き換えられてたりして、気づかずマルコマンドを実行する恐れがあって怖い。
なので、他の設定 etc_keep や set_env を sudoersで組み合わせて必要な環境変数だけ持ち込むのがベターだとおもう。これらのついては、はどこか別の機会に
参考資料
- man sudo
- man 5 sudoers