Upstartで環境変数をエクスポートできますか?

Upstartで環境変数をエクスポートできますか?

FOO=stringhereシステムプロセスで使用できるように変数をエクスポートする必要があります。私がやりたいことはUpstartです。

残念ながら、Upstartのマニュアルに従ってください。env FOO=stringhere http://upstart.ubuntu.com/cookbook/#environment-variables

ただし、システムの起動後はecho $FOO何も返されません。

不可能なことをしようとしているのでしょうか、それとも私が知っておくべきトラップがありますか?

答え1

引用したページによると、

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

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

デーモンがユーザーが設定した変数を知っていることを確認するには、次のようにテストできます。一時的に起動スクリプトを変更して次の内容を追加するlogger "=============== The variable FOO is set to $FOO ====================="と、起動時に記録された情報(/var/log/messages例:表示)が表示されます。

答え2

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

Upstart Cookbookの注意事項。

ジョブプロファイルはユーザーの環境変数にアクセスできず、スーパーユーザーもアクセスできません。作成されたすべてのワークプロセスは、環境がないinitのサブプロセスなので、これは不可能です。

Upstart Cookbook の追加説明です。

*.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

達成しようとしている作業は、ログインシェルを介してよりよく実行されます/etc/profilesource

export foo="String here"

関連情報