web-dev-qa-db-ja.com

Upstartを介して環境変数をエクスポートすることは可能ですか?

変数をエクスポートする必要がありますFOO=stringhereこれにより、システムプロセスで使用できるようになります。そして、私がこれをしたい場所は、アップスタートの仕事です。

残念ながら、Upstartのマニュアルに従ってenv FOO=stringherehttp://upstart.ubuntu.com/cookbook/#environment-variables

しかし、システムが起動した後、echo $FOOは何も返しません。

私は不可能なことをしようとしていますか、それとも私が知っておくべき落とし穴はありますか?

6
Coder

あなたが参照するページが言うように、

Upstartを使用すると、環境変数を設定できますジョブ構成ファイルが定義されているジョブからアクセスできます

は、変数が使用される環境に設定されていることを示しますシステムデーモンによって起動時に。 ser環境は、ログインすると個別に構成されます。

デーモンが設定した変数を知っているかどうかを確認したい場合は、一時的に起動スクリプトを変更し、logger "=============== The variable FOO is set to $FOO ====================="のようなものを追加してテストできます。次に、起動時にログに記録された情報を確認します(たとえば、/var/log/messagesを調べます)。

6
rozcietrzewiacz

あなたの例では、その変数を同じファイルで使用できます。

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
3
Aivaras