使用变量设置工作目录

使用变量设置工作目录

如何使用环境变量设置服务工作目录?这是一个服务配置示例:

[Service]
Environment=MYWORKINGDIR=/tmp
WorkingDirectory=${MYWORKINGDIR}

这会产生类似于 的错误not an absolute path。在开头添加斜杠可以“修复”该错误,但仍然找不到路径:

[Service]
Environment=MYWORKINGDIR=/tmp
WorkingDirectory=/${MYWORKINGDIR}

这可能吗?文档不清楚哪些指令可以/不能使用环境变量。

http://www.freedesktop.org/software/systemd/man/systemd.exec.html

答案1

这可能吗?

不,这是不可能的。

您可以使用:

  • ~
  • 绝对目录路径
  • -绝对目录路径

还有,WorkingDirectory明白说明符

答案2

我发现的一种解决方法是将WorkingDirectory=指向符号链接,并在启动服务之前更改符号链接。

我知道这是不一样的;但解决了我试图用与你相同的方法解决的问题。

答案3

对于所有迟到者,我在这里有一个有用的解决方案:https://unix.stackexchange.com/a/742644/92366

简而言之,如果您不需要太复杂的东西,您可以使用:

ExecStart=/bin/bash -c "cd \"/path/${variable_subpath}/\";echo \"${PWD}\";"

相关内容