假设我已将 EnvironmentFile 设置/usr/lib/systemd/system/httpd.service
如下:
…
[Service]
..
EnvironmentFile=/etc/sysconfig/httpd
然后我输入以下内容/etc/sysconfig/httpd
:
DEV_NAME="FOO"
DEV_NAME
当我重新启动 httpd 时,我看到了“环境”下的变量phpinfo()
。到目前为止,一切都按预期运行!
但是,如果我更新/etc/sysconfig/httpd
以包含以下内容:
. /etc/profile.d/www.sh
并/etc/profile.d/www.sh
包含以下内容:
#!/bin/bash
export DEV_NAME="BAR"
我没有看到DEV_NAME
中的变量phpinfo();
。我尝试过移动www.sh
到其他位置,确保 SELinux 上下文已更新(即使它不是强制执行的),并尝试将文件所有权更改为apache
用户和组。这些都不起作用。
答案1
简而言之,你不需要。你只能使用 Bash 脚本从内部Bash 脚本,而EnvironmentFile 加载的文件不是脚本因此它无法获取任何东西或者执行任何类似脚本的操作。
(与传统的 /etc/init.d 或 /etc/rc.d 定义不同,它们从一开始就只是 Bash 脚本,而 systemd .service 单元本身根本不是脚本 - 它是一个声明性配置文件。)