EnvironmentFile 里的引号和空格
EnvironmentFile=/etc/default/app 里写:
TOKEN=abc def
服务起来后 $TOKEN 只有 abc,后面的 def 被当成了另一个变量名的一部分或者直接忽略。systemd 的 EnvironmentFile 不是 shell,不支持命令替换,引号规则也不一样:含空格的值必须整体加引号,且不能有 export。
TOKEN="abc def"
另一个坑是行尾注释。FOO=bar # comment 在某些版本里会把 # comment 也算进值里。注释单独一行写。
排查时 systemctl show app -p Environment 能直接看到 systemd 解析出来的结果,比猜快。