- 締切済み
自作の起動スクリプトについて
/etc/init.dの下に自作の起動スクリプトを作成しようとしています。 そのなかで、rootユーザではなく、特定のユーザでサービス起動しようとしています。 特定のユーザで起動するためには、環境変数を設定する必要があるのですが、どのように設定するのでしょうか。 たとえば、 -- export USER=hoge export ENV1=abc export ENV2=def su - $USER -c "サービス起動コマンド" -- ここでは、$USERに対して、環境変数$ENV1と$ENV2を設定して、サービスを起動しようとしています。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- entree
- ベストアンサー率55% (405/735)
例えば以下のように書けばできます。 su - $USER -c ' export USER=hoge export ENV1=abc export ENV2=def testprog $ENV1 $ENV2 ' これをダブルクォーテーションにするとtestprogの引数は su -を行ったユーザのものが設定されてしまいます。 ENV1=pqr ENV2=xyz su - $USER -c " export USER=hoge export ENV1=abc export ENV2=def testprog $ENV1 $ENV2 " →testprog pqr xyzが実行されてしまう。 これを応用してこんなこともできます。 HOST1とHOST2のところだけダブルクォーテーションで括っています。 HOST1=abc HOST2=def su - $USER -c ' export USER=hoge export ENV1='"$HOST1"' export ENV2='"$HOST2"' testprog $ENV1 $ENV2 ' →testproc abc defが実行されます。
- notnot
- ベストアンサー率47% (4900/10358)
su - だと、そのユーザでのログイン処理を行うので、環境変数を引き継ぎません。 ハイフンを付けなければ環境変数を引き継ぎます。