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/profile
。source
export foo="String here"