У меня есть виртуальная машина Linux с Ubuntu 18. Когда я запускаю эту команду
sudo systemctl start myservice.service
Получение ошибки
● 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.
Как установить для переменной среды переменной среды «DOTNET_CLI_HOME» значение spec
?
При использовании SystemD вы можете определять переменные среды внутри вашего модуля. (это в документации SystemD по служебным файлам, объявлениям и конфигурациям.)
Пример синтаксиса:
[Service]
...
Environment=VARNAME=VARCONTENTS
Итак, в этом случае попробуйте добавить Environment = DOTNET_CLI_HOME = / temp
к вашему сервисному заявлению в вашем сервисном файле. Затем запустите свой типичный:
sudo systemctl daemon-reload
sudo systemctl start myservice.service
, который затем должен использовать новую переменную настройки / среды, как определено в SystemD.
Есть несколько способов установить переменные окружения в Linux, и вы можете подать заявку на Ubuntu.
1) Использование экспорта
export NAME=VALUE
2) Редактирование файла bashrc в папке $ USER
[... Other environments variables]
NAME=VALUE
Если вы хотите узнать больше и углубиться в разницу между ними, найдите минутку, чтобы прочитать https://www.geeksforgeeks.org/ environment-variable-in-linux-unix /