如何设置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变量。是

Linux机器上运行的
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