sudoで環境変数を引き継ぎたい
sudo でコマンドを実行する際、今現在のログインアカウントの環境変数を引き継いで実行したい。
方法
-Eオプションを追加する。
$ sudo -E ls -la $HOME
-Eは実行したいコマンドの直前に置く。
経過
sudo -u hogeなどで実行すると、sudoを実行したユーザの環境変数が引き継がれない。 昔は、こんなこと考えずに引き継がれてた気がするが、どうやらsudoのバージョンが上がって 仕様変更されたらしい。
環境変数を引き継ぐためにはvisudoを使ってsudoersファイルに環境変数を記述するのが 定石のようだが、/etc配下はできるだけ触りたくない。
そこで下記の方法を見つけた。-Eをつけるだけで良いらしい。
ただし、man sudo しても-Eオプションは何故か載っていなかった。 (manにないだけで実際には使用できる。)
manの最後にver1.6.6とあるのでマニュアルが古いと思われる。 sudo[Enter]で表示されるUsageにはEオプションは存在するので。
別解
-u オプションを使用して別ユーザーとしてsudoを実行したい場合、
そのユーザーの .bashrc
や /etc/profile
に定義してある設定を使用したい場合がある。
そんなときは、-i オプションを使用すれば良い。
sudo -u taro -i env