如何在 .NET systemd 服务中设置环境变量?

Arv*_*iya 3 command-line environment-variables 18.04

我有 Ubuntu 18 的 Linux 虚拟机。当我运行这个命令时

sudo systemctl start myservice.service
Run Code Online (Sandbox Code Playgroud)

获取错误

? myservice.service - dummyservice in .NET Loaded: loaded (/lib/systemd/system/myservice.service; disabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2020-05-26 23:53:20 IST; 10min ago Process: 3634 ExecStart=/usr/bin/dotnet /home/linux/bin/Downloads/myservice.dll (code=exited, status=1/FAILURE)

May 26 23:53:19 arvind systemd[1]: Starting myservice in .NET... May 26 23:53:20 arvind dotnet[3634]: The user's home directory could not be determined. Set the 'DOTNET_CLI_HOME' environment variable to spec May 26 23:53:20 arvind systemd[1]: myservice.service: Control process exited, code=exited status=1 May 26 23:53:20 arvind systemd[1]: myservice.service: Failed with result 'exit-code'. May 26 23:53:20 arvind systemd[1]: Failed to start myservice in .NET.
Run Code Online (Sandbox Code Playgroud)

如何设置环境变量'DOTNET_CLI_HOME' environment variable to spec

Tho*_*ard 5

使用 SystemD 时,您可以在单元内部定义环境变量。(这是根据有关服务文件、声明和配置的 SystemD 文档。)

示例语法:

[Service]
...
Environment=VARNAME=VARCONTENTS
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,请尝试Environment=DOTNET_CLI_HOME=/temp在您的服务文件中添加您的服务声明。然后运行你的典型:

sudo systemctl daemon-reload
sudo systemctl start myservice.service
Run Code Online (Sandbox Code Playgroud)

然后应该使用 SystemD 中定义的较新的设置/环境变量。