4

環境変数 USER を設定する必要があるスクリプトがあります。export USER=xxxスクリプトは複数のユーザーが使用するため、スクリプトの最初だけではできません。で定義できたのcrontabですが、うまく引き込める方法はないかと思っていました。

ソース.bashrcとを試し.profileましたが、どちらも USER を定義していません。さらに、Ubuntu では.bashrc、非対話型シェルで単純に返されます。

4

3 に答える 3

5

スクリプトの先頭に次のように書くことで回避できます (Bashism):

USER=$(whoami)

または古いスタイル:

USER=`whoami`

... にあると仮定するとwhoami、いくつかの (ほとんどの?) 他の変数と同じようPATHに に設定することもできます。crontabつまり、変数crontab自体を (少なくとも Vixies で) 設定することもできます。たとえば、こちらcronを参照してください。

于 2012-11-21T14:25:49.817 に答える
4

コマンドを使用しenvます。crontab エントリは次のようになります。

* * * * * env USER=foouser /path/to/script.sh
于 2012-11-21T14:59:48.090 に答える
0

コマンドの前に環境変数を指定できます。こうすれば、crontab の他の部分には影響しません。

ユーザー.sh:

#!/bin/sh
echo $USER

クリップ:

USER=foo ./user.sh ## outputs "foo"
于 2012-11-21T13:40:25.440 に答える