• 締切済み

自作の起動スクリプトについて

/etc/init.dの下に自作の起動スクリプトを作成しようとしています。 そのなかで、rootユーザではなく、特定のユーザでサービス起動しようとしています。 特定のユーザで起動するためには、環境変数を設定する必要があるのですが、どのように設定するのでしょうか。 たとえば、 -- export USER=hoge export ENV1=abc export ENV2=def su - $USER -c "サービス起動コマンド" -- ここでは、$USERに対して、環境変数$ENV1と$ENV2を設定して、サービスを起動しようとしています。

みんなの回答

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

例えば以下のように書けばできます。 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)
回答No.1

su - だと、そのユーザでのログイン処理を行うので、環境変数を引き継ぎません。 ハイフンを付けなければ環境変数を引き継ぎます。