systemd EnvironmentFileを介して配列を渡すには?

systemd EnvironmentFileを介して配列を渡すには?
[root@vm-devcjn-01-a tmp]# cat /tmp/test_service_script_fred
#!/bin/bash

sleep 30&
echo `date` $# args: $@ > $0.log

シェルから呼び出すときに配列を渡すと、期待どおりに機能します。

[root@vm-devcjn-01-a tmp]# args=("THIS" "THAT" "123456")
[root@vm-devcjn-01-a tmp]# ./test_service_script_fred  ${args[@]}
[root@vm-devcjn-01-a tmp]# tail test_service_script_fred.log
Wed 18 Oct 19:36:51 BST 2023 3 args: THIS THAT 123456

ただし、EnvironmentFileを介して渡されたのと同じ配列を使用してsystemdサービスを介して呼び出すと、次のことは行われません。

[root@vm-devcjn-01-a tmp]# cat StartArgs
args=("THIS" "THAT" "123456")

[root@vm-devcjn-01-a tmp]# systemctl cat test@fred
# /etc/systemd/system/[email protected]
# The test service unit template file
#
# version=$Header

[Unit]
Description=test %I instance

[Service]
Type=forking
KillMode=process
WorkingDirectory=/tmp
EnvironmentFile=/tmp/StartArgs
ExecStart=/bin/bash /tmp/test_service_script_%i ${args[@]}

[root@vm-devcjn-01-a tmp]# systemctl start test@fred
[root@vm-devcjn-01-a tmp]# tail test_service_script_fred.log
Wed 18 Oct 19:39:12 BST 2023 1 args:

関連情報