sudoする時にコマンドを実行するユーザの環境変数を読む方法
例えば、ジョブスケジューラではrootでの実行しかサポートされていないが、ある特定のユーザでの実行が必要であり、かつそのユーザの環境変数を読まなくてはいけない場合。
そんな場合にはsudo -iが重宝します。
sudo -iを使用しない場合
[vagrant@localhost ~]$ grep VAL .bash_profile export VAL=/var/tmp [vagrant@localhost ~]$ cat list.sh #/usr/local/bin/bash echo $VAL [vagrant@localhost ~]$ ./list.sh /var/tmp [vagrant@localhost ~]$ su - パスワード: [root@localhost ~]# sudo -u vagrant /home/vagrant/list.sh [root@localhost ~]#
単純にsudo -uした場合にはコマンド実行ユーザの環境変数は読まない。
sudo -iを使用した場合
[vagrant@localhost ~]$ grep VAL .bash_profile export VAL=/var/tmp [vagrant@localhost ~]$ cat list.sh #/usr/local/bin/bash echo $VAL [vagrant@localhost ~]$ ./list.sh /var/tmp [vagrant@localhost ~]$ su - パスワード: [root@localhost ~]# sudo -u vagrant -i /home/vagrant/list.sh /var/tmp
sudo -uに-iオプションを付けることで、環境変数を読み込むことが出来る。