如何设置在Linux机器上运行的服务所使用的环境变量

bakd9h0s  于 2023-04-29  发布在  Linux
关注(0)|答案(3)|浏览(158)

在Linux机器上运行的my-service需要提供ENV_VAR环境变量。如果我在etc/environment文件中声明这个变量,它可以工作:
vim /etc/environment然后添加额外的行:
ENV_VAR="My Value"
最后重新加载:
source /etc/environment
然后我可以重新启动my-service
sudo service my-service stop sudo service my-service start
我想知道是否可以避免在etc/environment文件中声明ENV_VAR变量。是否有其他方法可以声明service可以看到的环境变量?

ohtdti5x

ohtdti5x1#

所以如果你想添加一个 * 环境变量 *,你可以做一些事情:
1.编辑/etc/enviroment(所有用户)
1.编辑/etc/profile(所有用户)
1.编辑~/.bashrc(Just You)
编辑上面的任何文件将确保在任何时候启动计算机时,您的环境都可以访问这些变量。
您还可以编辑my-servicemy-service包含的文件(如Cyrus所建议的)。这意味着,如果您对my-service程序的源代码或my-service包含的文件有写权限(在执行之前调用),您可以在该文件中添加一行代码。
您甚至不需要编辑文件!每当你启动一个终端,你可以通过输入你应该添加到上面提到的文件中的文本来对环境进行实时更改。这个环境更改就像~/.bashrc更改一样,只适用于当前用户。如果你打算使用sudo <command>,你将不得不先使用sudo su切换到超级用户用户,然后再更改环境。
如果你正在编辑文件或输入命令,我建议你使用下面的代码行。export命令将确保my-service可以访问环境变量。
export ENV_VAR=value
Related question

dtcbnfnu

dtcbnfnu2#

是否有一种方法可以使用任何其他方法来声明环境变量,以供服务看到?
如果您的系统使用systemd来管理服务,您可以从systemd.exec documentation“环境”部分添加到服务文件中:

Environment="ENV_VAR=My Value"
ej83mcc0

ej83mcc03#

它也可以在没有引号的情况下工作,例如,如果你想为www. example设置环境变量 www.example.com 核心应用程序;

Environment=ASPNETCORE_ENVIRONMENT=Production ASPNETCORE_URLS=http://localhost:5001

可以使用空格设置多个变量

相关问题