systemctl は bash コマンドを環境変数として追加します。

systemctl は bash コマンドを環境変数として追加します。

この行をsystemctlファイルの環境として使用したいと思います。

Environment="PGBOUNCER_IP=$(ip -json addr show $interface |   jq -r '.[] | .addr_info[] | select(.family == "inet") | .local'| grep -v '127.0.0.1')"

しかし、その値を考慮せずに完全なコマンドを取ります。

ファイルに入れてsystemctlから呼び出してみました。

ExecStartPre=/bin/bash -c 'source envfile'

しかし幸運はありません。

答え1

解決策が見つかりました。

ExecStartPre=/bin/bash -c "/bin/systemctl set-environment PGBOUNCER_IP=$(ip -json addr show $interface |   jq -r '.[] | .addr_info[] | select(.family == \"inet\") | .local'| grep -v '127.0.0.1')"

関連情報