我需要为我的应用程序的邮件function定义一个这样的环境variables来工作:
RUBY_MAIL_SMTP_SETTINGS=' :address: "smtp.example.com" :port: "25" :authentication: :plain :encryption: :tls :user_name: "user" :password: "pass" '
将其粘贴到bashterminal中工作正常,但将其放入环境文件中,并使用EnvironmentFile选项从systemd单元文件中引用它不起作用:
juli 01 07:17:58 myserver systemd [1]:忽略无效环境'RUBY_MAIL_SMTP_SETTINGS = juli 01 07:17:58 myserver systemd [1]::地址:“smtp.example.com” juli 01 07:17:58 myserver systemd [1]::port:“25” juli 01 07:17:58 myserver systemd [1]::authentication::plain juli 01 07:17:58 myserver systemd [1]::encryption::tls juli 01 07:17:58 myserver systemd [1]::user_name:“user” juli 01 07:17:58 myserver systemd [1]::密码:“pass”:/ usr / local / etc / myproject / environment
我已经尝试在每行之后添加反斜杠,如下所示:
RUBY_MAIL_SMTP_SETTINGS='\ :address: "smtp.example.com"\ :port: "25"\ :authentication: :plain\ :encryption: :tls\ :user_name: "user"\ :password: "pass" '
这个工作,但被解释为一个长行,这意味着内容不能被parsing为YAML。
那么这是否意味着将多行环境variables添加到systemd环境文件是不可能的?
您需要引用整个variables赋值(不是值),并且每行反斜线。
示例服务文件:
[Service] Environment='RUBY_MAIL_SMTP_SETTINGS=\ :address: "smtp.example.com"\ :port: "25"\ :authentication: :plain\ :encryption: :tls\ :user_name: "user"\ :password: "pass"\ ' ExecStart=/bin/echo $RUBY_MAIL_SMTP_SETTINGS
运行这个例子会产生日志:
Oct 27 14:03:32 io echo[9621]: :address: smtp.example.com :port: 25 :authentication: :plain :encryption: :tls :user_name: user :password: pass