変数をエクスポートする必要がありますFOO=stringhere
これにより、システムプロセスで使用できるようになります。そして、私がこれをしたい場所は、アップスタートの仕事です。
残念ながら、Upstartのマニュアルに従ってenv FOO=stringhere
http://upstart.ubuntu.com/cookbook/#environment-variables
しかし、システムが起動した後、echo $FOO
は何も返しません。
私は不可能なことをしようとしていますか、それとも私が知っておくべき落とし穴はありますか?
あなたが参照するページが言うように、
Upstartを使用すると、環境変数を設定できますジョブ構成ファイルが定義されているジョブからアクセスできます。
は、変数が使用される環境に設定されていることを示しますシステムデーモンによって起動時に。 ser環境は、ログインすると個別に構成されます。
デーモンが設定した変数を知っているかどうかを確認したい場合は、一時的に起動スクリプトを変更し、logger "=============== The variable FOO is set to $FOO ====================="
のようなものを追加してテストできます。次に、起動時にログに記録された情報を確認します(たとえば、/var/log/messages
を調べます)。
あなたの例では、その変数を同じファイルで使用できます。
Upstartクックブックからのメモ。
ジョブ構成ファイルは、スーパーユーザーでさえも、ユーザーの環境変数にアクセスできないことに注意してください。作成されるすべてのジョブプロセスは、ユーザーの環境を持たないinitの子であるため、これは不可能です。
新興クックブックからのさらなる説明。
* .confファイルにenv TESTING=123
と書いて、この変数を以下のスクリプトブロック(使用したもの)で使用できるとします。
script
# prints "TESTING='123'" to system log
logger -t $0 "TESTING='$TESTING'"
end script
または、もう少し高度なアプローチを使用すると、ジョブを「リッスン」するジョブで変数を使用できます。
# /etc/init/A.conf
start on wibble
export foo
# /etc/init/B.conf
start on A
script
logger "value of foo is '$foo'"
end script