システム化されたbash組み込み機能

システム化されたbash組み込み機能

環境ファイルを設定するためにCommandoソースを使用する必要があるアプリケーションがあります。

[Unit]
Description=Programname
After=syslog.target network.target

[Service]
User=root
ExecStartPre=source /opt/environmentname/bin/activate enviromentname
ExecStart=/var/programname/programname -f /etc/programname/programconfig.conf

[Install]
WantedBy=multi-user.target  

Systemdは絶対パスではなく、ソースがbash組み込みであるため、ソースについて文句を言います。

ExecStartPre=/bin/bash -c "source /opt/environmentname/bin/activate enviromentname"

ベンダーの要件のため、chmod +xの代わりにソースを使用してスクリプトを実行します。

では、動作させる方法はありますか?それともフォークのようなものを使うべきですか?

Systemdユニットファイルでbash組み込みコマンドを正しく使用するにはどうすればよいですか?

ベストアンサー1

次のような複数行スクリプトを実行できる必要があります。

ExecStart=/bin/bash -c '\
   source /opt/environmentname/bin/activate environmentname; \
   exec /var/programname/programname -f /etc/programname/programconfig.conf'

おすすめ記事