Tôi nghĩ vấn đề của bạn là do không gian trong nội dung của biến môi trường. Nhìn vào các ví dụ từ các tài liệu systemd , một bài tập nên là một chuỗi đơn:
Thí dụ:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
Điều này sẽ thực thi / bin / tiếng vang với bốn đối số: one
, two
, two
, và two two
.
Thí dụ:
Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE
Kết quả trong tiếng vang này được gọi là hai lần, lần đầu tiên với lập luận
'one'
, 'two two' too
,
, và lần thứ hai với đối số
one
, two two
, too
.
Tôi đã thử nghiệm điều này với dịch vụ sau (lưu ý các trích dẫn xung quanh toàn bộ bài tập):
[Unit]
Description=My Daemon
[Service]
Environment='CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current'
ExecStart=/bin/echo ${CATALINA_OPTS}
[Install]
WantedBy=multi-user.target
Và có đầu ra mong muốn trong journalctl
:
Apr 26 08:19:29 laptop echo[28439]: -Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
Tất nhiên, nó sẽ đơn giản hơn để sử dụng EnvironmentFile
thay thế. Thay thế Environment
bằng cách sau đây cho kết quả mong muốn tương tự:
EnvironmentFile=/tmp/foo
Nơi /tmp/foo
chứa (lưu ý thiếu dấu ngoặc kép):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTS
trongsystemd
môi trường cho Apachetomcat
7.0.61), sử dụngEnvironmentFile
thực sự là cách tốt nhất. Cảm ơn!