【Linux】sudo 実行時に環境変数を引き継ぐ【Mac】

Linux

Linux やMac でsudo を付与して実行する際、環境変数を引き継ぐ方法を記載します。

sudo で実行すると設定した環境変数を読み込めない

以下のような、環境変数$ENV_TESTを出力するtest.shを作成した。

echo $ENV_TEST

sudo を付けずに実行した場合、事前にexportで指定した環境変数を出力してくれる。

$ export ENV_TEST='Hello, World.'
$ ./test.sh 
Hello, World

一方、sudo を付与して実行した場合、何も出力されない。(正確にはechoの改行のみが出力される。)

$ sudo ./test.sh

sudo に-Eオプションを付与することで環境変数の引き継ぎが可能

環境変数を引き継ぎたい場合、sudo に-E オプションを付与することで引き継ぎが可能となる。

実際に先程と同様のスクリプトで環境変数が出力されることを確認。

$ sudo -E ./test.sh
Hello, World.

環境変数まわりについては下記サイト様が詳しいので、参照してほしい。