ざる魂

真似ぶ魂、学ぶの本質。知られざる我が魂

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