梳理下Linux系统变量,用户环境变量,用户自定义变量

简介: 对Linux下变量有了新的认识

设置了两个变量xy  最后通过export   导入了y,但没有对x做同样的操作

在当前shell中,通过echo可以读取xy  的值

[root@izbp152ke14timzud0du15z ~]# x="enable"[root@izbp152ke14timzud0du15z ~]# echo $xenable
[root@izbp152ke14timzud0du15z ~]# y="disable"[root@izbp152ke14timzud0du15z ~]# echo $ydisable
[root@izbp152ke14timzud0du15z ~]# export y

这是一段Python脚本read.py

importosimporttimeprint(os.getenv("x"))
print(os.getenv("y"))
time.sleep(1800)

执行脚本后输出,x的值没有读取出来,y的值被读取出来了

[root@izbp152ke14timzud0du15z ~]# python read.pyNone
disable


查看下Python进程

[root@izbp152ke14timzud0du15z ~]# ps -ef|grep readroot         200 Nov01 ?        00:00:00 [kthreadd]
root     2450623905011:19 pts/2    00:00:00 python read.py
root     2525820532011:20 pts/1    00:00:00 grep--color=auto read

查看下Python的父进程

[root@izbp152ke14timzud0du15z ~]# ps -ef|grep 23905root     2390523903010:50 pts/2    00:00:00 -bashroot     2450623905011:19 pts/2    00:00:00 python read.py
root     2651320532011:21 pts/1    00:00:00 grep--color=auto 23905

再重新开一个终端,执行脚本后,xy 的值都没有被读取出来

[root@izbp152ke14timzud0du15z ~]# python read.pyNone
None

我管x为用户自定义变量,y 为用户环境变量(临时),子进程可以读取当前用户环境变量,但是无法读取用户自定义变量,用户自定义变量只在当前进程中生效


设置用户永久环境变量

vim ~/.bash_profile
exportz=auto

刷新环境变量

[root@izbp152ke14timzud0du15z ~]# source ~/.bash_profile

改下Python脚本

importosimporttimeprint(os.getenv("x"))
print(os.getenv("y"))
print(os.getenv("z"))
time.sleep(1800)

再开一个新的终端执行Python脚本,

[root@izbp152ke14timzud0du15z ~]# python read.pyNone
None
auto


通过ssh再重新登录一个其他用户执行一下Python脚本

结果是什么值都读取不到,即使是z  也只是其他用户环境变量

[pl@izbp152ke14timzud0du15z ~]$ python /root/read.py
None
None
None


如何设置让所有用户都可以读取到的变量呢,那就是系统环境变量了

vim /etc/profile
exportxyz="hello"

刷新文件内容

source /etc/profile


更新下Python脚本

importosimporttimeprint(os.getenv("x"))
print(os.getenv("y"))
print(os.getenv("z"))
print(os.getenv("xyz"))
time.sleep(1800)

其它已经登录的用户,需要重新登录,然后执行Python脚本,可以读取系统环境变量xyz

[pl@izbp152ke14timzud0du15z ~]$ python /root/read.py
None
None
None
hello

总结:

  1. 系统环境变量到处可以读取
  2. 用户环境变量,针对当前用户生效,子进程可以读取到,如果是临时的,只能当前进程及子进程可以读取
  3. 用户自定义变量,针对当前进程生效
目录
相关文章
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
18 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
24天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
72 4
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
35 5
linux系统服务二!
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
34 3
linux系统服务!!!
|
21天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
169 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
23天前
|
Linux 测试技术 网络安全
Linux系统之安装OneNav个人书签管理器
【10月更文挑战第19天】Linux系统之安装OneNav个人书签管理器
41 5
Linux系统之安装OneNav个人书签管理器
|
22天前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
69 3
Linux系统之部署Linux管理面板1Panel
|
3天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
18 3
|
6天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
23 6