調べた結果 4 つの方法でできました。
- 環境変数を引き継ぐ
export ENV=VAL sudo -E command
- sudoers に evn_keep を指定する
$ sudo cp /etc/sudoers sudoers.bac $ sudo visudo $ sudo diff -u sudoers.bac /etc/sudoers --- sudoers.bac 2018-03-16 20:28:53.668295300 +0900 +++ /etc/sudoers 2018-03-16 20:29:29.756458100 +0900 @@ -9,6 +9,7 @@ Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" +Defaults env_keep += "ENV" # Host alias specification $ export ENV=VAL $ sudo command
- 一時環境変数を使う
sudo bash -c 'ENV=VAL command'
- sudo 先のユーザーの .bashrc などに設定後、
-i
オプションを付けて sudo を実行する。
echo 'export ENV=VAL' | sudo tee /root/.bashrc sudo -i command
個人的には、いろいろ試しているときには一時環境変数を使って、ちゃんとコマンドなどを作るときは env_keep を設定するのがいいのかなと思いました。
env_keep で引き継ぐ変数を一覧する方法
sudo sudo -V
で確認できます。
改訂履歴
- 2018/03/16 参考文献・env_keep確認方法の追加