如何设置Linux机器上运行的服务要使用的环境变量
Linux机器上运行的如何设置Linux机器上运行的服务要使用的环境变量,linux,bash,devops,Linux,Bash,Devops,Linux机器上运行的my service需要提供ENV_VAR环境变量。如果我在etc/environment文件中使用以下命令声明此变量,它将起作用: vim/etc/environment 然后添加一个额外的行: ENV_VAR=“我的价值” 最后重新加载: source/etc/environment 然后,我可以通过以下方式重新启动我的服务: sudo服务我的服务站 sudo服务我的服务开始 我想知道是否可以避免在etc/environment文件中声明ENV_VAR变量。是
my service
需要提供ENV_VAR
环境变量。如果我在etc/environment
文件中使用以下命令声明此变量,它将起作用:
vim/etc/environment
然后添加一个额外的行:
ENV_VAR=“我的价值”
最后重新加载:
source/etc/environment
然后,我可以通过以下方式重新启动我的服务
:
sudo服务我的服务站
sudo服务我的服务开始
我想知道是否可以避免在etc/environment
文件中声明ENV_VAR
变量。是否有一种方法可以使用任何其他方法声明服务查看的环境变量
有没有一种方法可以声明环境变量,让服务使用其他方法查看
如果您的系统使用systemd管理服务,则可以从“环境”部分添加到服务文件:
Environment="ENV_VAR=My Value"
有没有一种方法可以声明环境变量,让服务使用其他方法查看
如果您的系统使用systemd管理服务,则可以从“环境”部分添加到服务文件:
Environment="ENV_VAR=My Value"
因此,如果要添加环境变量,可以执行以下操作:
编辑/etc/environment
(所有用户)
编辑/etc/profile
(所有用户)
编辑~/.bashrc
(只有你)
编辑上面的任何文件都将确保在任何时候启动计算机时,您的环境都可以访问这些变量
您还可以编辑我的服务
或我的服务
包含的文件(如建议的)。这意味着,如果您对我的服务
程序的源代码或我的服务
包含的文件(在其自身执行之前调用)具有写入权限,则可以向该文件添加一行代码
您甚至不必编辑文件!无论何时启动终端,只要输入本应作为命令添加到上述文件之一的文本,即可对环境进行实时更改。此环境更改将与~/.bashrc
更改类似,因为它只适用于当前用户。如果您计划sudo
,则必须首先sudo su
切换到超级用户,然后更改环境
无论是编辑文件还是输入命令,我建议使用以下代码行。export
命令将确保环境变量可由my service
访问
export ENV_VAR=value
因此,如果要添加环境变量,可以执行以下操作:
编辑/etc/environment
(所有用户)
编辑/etc/profile
(所有用户)
编辑~/.bashrc
(只有你)
编辑上面的任何文件都将确保在任何时候启动计算机时,您的环境都可以访问这些变量
您还可以编辑我的服务
或我的服务
包含的文件(如建议的)。这意味着,如果您对我的服务
程序的源代码或我的服务
包含的文件(在其自身执行之前调用)具有写入权限,则可以向该文件添加一行代码
您甚至不必编辑文件!无论何时启动终端,只要输入本应作为命令添加到上述文件之一的文本,即可对环境进行实时更改。此环境更改将与~/.bashrc
更改类似,因为它只适用于当前用户。如果您计划sudo
,则必须首先sudo su
切换到超级用户,然后更改环境
无论是编辑文件还是输入命令,我建议使用以下代码行。export
命令将确保环境变量可由my service
访问
export ENV_VAR=value
将ENV_VAR=“My Value”
添加到My service
或此服务包含的文件中。请澄清。或者更好的是,把它作为一个答案发布,这样我们就可以投票了。你的问题更适合。你正在运行什么发行版sudo service我的服务站
建议您不使用systemd。您使用的是哪个服务管理器(rc init、systemd、sysvinit、upstart等)?Ubuntu发行版=16.04
。它确实随systemctl
一起提供。我可以用sudo systemctl start my service
来启动它,而不是sudo service my service start
是否有办法使用命令行设置环境变量(而不会弄乱my service.conf
文件?添加ENV_VAR=“my Value”
至我的服务
或此服务包含的文件。请澄清。或者更好的是,将其作为答案发布,以便我们可以对其进行投票。您的问题更适合。您正在运行什么分发版?sudo service my service stop
建议您未使用systemd。哪个服务经理(rc init、systemd、sysvinit、upstart等)您正在使用吗?Ubuntu发行版=16.04
。它确实带有systemctl
。我可以用sudo systemctl start my service start
来启动它,而不是sudo service my service start
来启动它。有没有办法使用命令行设置环境变量(没有弄乱my service.conf
文件?不,那是错误的。服务的环境不应该依赖于运行它的环境。只需创建一个模板服务(my service)_service@argument.service