我正在为我的脚本使用systemd服务 我需要从home / user / .bashrc
设置环境值 source /home/user/.bashrc
在脚本和systemd种子中不起作用不支持源代码功能。
帮帮我
答案 0 :(得分:5)
不要尝试生成EnvironmentFile,而是让shell执行启动脚本,然后然后执行命令。这避免了可能导致不匹配的步骤(如env
存储环境的方式,以及systemd EnvironmentFile
选项如何加载它。)
[Service]
Type=simple
User=user
Group=user
ExecStart=/bin/bash -l -c 'exec "$@"' _ your-command arg1 arg2 ...
此处,我们不是使用bash -l
来运行登录shell,而是明确地发送$0
,并在该位置传递/home/user/.bashrc
。
[Service]
Type=simple
User=user
Group=user
ExecStart=/bin/bash -c '. "$0" && exec "$@"' /home/user/.bashrc your-command arg1 arg2 ...
.bashrc
文件通常用于设置交互式环境。这意味着他们的设置通常不适合服务。EnvironmentFile
手动审核意味着您知道完全运行该服务的内容,并且可以将其与交互式环境分开配置。 如果您已经手动审核了EnvironmentFile在shell执行时具有相同含义,您还可以在set -a; source /path/to/your-environment-file; set +a
中运行.bashrc
以获取其环境变量。 EnvironmentFile
之类的非用户可写位置使用/etc/conf.d
比在该用户主目录下的点文件更安全。