環境変数 USER を設定する必要があるスクリプトがあります。export USER=xxx
スクリプトは複数のユーザーが使用するため、スクリプトの最初だけではできません。で定義できたのcrontab
ですが、うまく引き込める方法はないかと思っていました。
ソース.bashrc
とを試し.profile
ましたが、どちらも USER を定義していません。さらに、Ubuntu では.bashrc
、非対話型シェルで単純に返されます。
スクリプトの先頭に次のように書くことで回避できます (Bashism):
USER=$(whoami)
または古いスタイル:
USER=`whoami`
... にあると仮定するとwhoami
、いくつかの (ほとんどの?) 他の変数と同じようPATH
に に設定することもできます。crontab
つまり、変数crontab
自体を (少なくとも Vixies で) 設定することもできます。たとえば、こちらcron
を参照してください。
コマンドを使用しenv
ます。crontab エントリは次のようになります。
* * * * * env USER=foouser /path/to/script.sh
コマンドの前に環境変数を指定できます。こうすれば、crontab の他の部分には影響しません。
ユーザー.sh:
#!/bin/sh
echo $USER
クリップ:
USER=foo ./user.sh ## outputs "foo"