• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

亲测有效Linux添加环境变量,并且使service可以获取到这些环境变量

武飞扬头像
10tesseract
帮助1


0、Linux环境变量分类

(1)临时变量,指当shell窗口关闭时变量失效,通过export命令添加。
(2)全局变量,全局生效且不会因窗口的关闭而失效,通过修改/etc/profile文件实现。
这里主要介绍第(2)种。


1、Linux全局环境变量的添加方法:修改 /etc/profile

(1) 代码如下:

# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u w /etc/profile

# 修改/etc/profile文件内容
# 输入vim /etc/profile,进入默认的命令行模式(command mode)
vim /etc/profile

# 按i进入文本输入模式(编辑模式/insert mode)
# 在最后加上
export VARIABLE_1='xxx'
export VARIABLE_2='yyy'
# 修改完成按Esc退出

# 按:进入末行模式(底行模式/last line mode),然后输入w保存,继续输入:q退出

# 手动source /etc/profile生效,或新开终端生效
source /etc/profile

学新通

(2) 注意事项:
(a)生效时间:新开终端生效,或者手动source /etc/profile生效
(b)生效期限:永久有效
(c)生效范围:对所有用户有效


2、查看环境变量

# 查看单个环境变量
echo $VARIABLE_1
echo $VARIABLE_2

# 查看全部环境变量
env

3、使service可以获取到这些环境变量

(1) 注意:
为什么注册的系统服务不能获取到全局的环境变量?

普通Shell脚本在终端下运行时,环境变量来自于init/profile/.bash_profile等,就是在当前终端下可以得到的环境,比如PATH。
在service模式下,脚本运行在受限的环境中: 比如
service tomcat restart等同于
env -i LANG=“ L A N G " P A T H = " LANG" PATH=" LANG"PATH="PATH” TERM=“$TERM” “/etc/init.d/tomcat” restart

其中: env -i表示清空当前环境变量,然后带入后面的LANG,PATH,TERM
而PATH变量来自于/etc/init.d/functions:
PATH=“/sbin:/usr/sbin:/bin:/usr/bin”

所以,当把一个shell脚本放入到service中时,需要设定好PATH等环境。

(2) 方法如下:

# etc/systemd/system/路径下找到对应的service服务,例如abc.service
# 添加内容:Environment=VARIABLE_1='xxx'
# 添加内容:Environment=VARIABLE_2='yyy'

[Service]
User=root
Group=root
Environment=VARIABLE_1='xxx'
Environment=VARIABLE_2='yyy'

# 重新加载service
systemctl daemon-reload
# 重新启动service,下面的abc为对应上面的service服务的名称(去掉扩展名)

service abc restart

#若有此服务对应的restart-服务,则也需重复以上步骤
学新通

4、service脚本获取环境变量

import os
env_dist = os.environ
variable_1 = env_dist.get("VARIABLE_1")
variable_2 = env_dist.get("VARIABLE_ 2")

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbgfif
系列文章
更多 icon
同类精品
更多 icon
继续加载