在 systemd 的服务定义中,把整个环境赋值保留在 unit 文件的引号内:

[Service]
Environment="NO_PROXY=localhost,127.0.0.1,::1,intranet.example"

逗号是 NO_PROXY 值的一部分。systemd 在构建环境时会去掉外围的引号;网络客户端拿到这份列表后,再按自己的绕过语法来解释。在已经带引号的条目中间再开一个引号,并不会形成独立的 shell 引号层级。

unit 文件不是 shell 脚本。export 语句或熟悉的变量名,在 Environment= 指令里并不会带来 shell 展开。

  1. 在本机查看实际生效的服务配置,并隐去密钥。
  2. 修改之后,重新加载服务定义,并按受影响服务通常的方式重启。要规划对正在进行的工作的影响,尤其是共享的镜像守护进程。
  3. 确认预期的值真的到达了新进程。只重新加载 unit 文件并不能替换已有进程的环境。

到这一步之后,再去查客户端侧的域名或子网匹配。终端里能用的列表,可能从来没有以同样的形式到达服务。

相关文章