天天看點

梳理下Linux系統變量,使用者環境變量,使用者自定義變量

設定了兩個變量

x

y

最後通過

export

導入了

y

,但沒有對

x

做同樣的操作

在目前

shell

中,通過echo可以讀取

x

y

的值

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

這是一段Python腳本

read.py

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

執行腳本後輸出,

x

的值沒有讀取出來,

y

的值被讀取出來了

[root@izbp152ke14timzud0du15z ~]# python read.py
None
disable      

檢視下Python程序

[root@izbp152ke14timzud0du15z ~]# ps -ef|grep read
root         2     0  0 Nov01 ?        00:00:00 [kthreadd]
root     24506 23905  0 11:19 pts/2    00:00:00 python read.py
root     25258 20532  0 11:20 pts/1    00:00:00 grep --color=auto read      

檢視下Python的父程序

[root@izbp152ke14timzud0du15z ~]# ps -ef|grep 23905
root     23905 23903  0 10:50 pts/2    00:00:00 -bash
root     24506 23905  0 11:19 pts/2    00:00:00 python read.py
root     26513 20532  0 11:21 pts/1    00:00:00 grep --color=auto 23905      

再重新開一個終端,執行腳本後,

x

y

的值都沒有被讀取出來

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

我管

x

為使用者自定義變量,

y

為使用者環境變量(臨時),子程序可以讀取目前使用者環境變量,但是無法讀取使用者自定義變量,使用者自定義變量隻在目前程序中生效

設定使用者永久環境變量

vim ~/.bash_profile
export z=auto      

重新整理環境變量

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

改下Python腳本

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

再開一個新的終端執行Python腳本,

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

通過ssh再重新登入一個其他使用者執行一下Python腳本

結果是什麼值都讀取不到,即使是

z

也隻是其他使用者環境變量

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

如何設定讓所有使用者都可以讀取到的變量呢,那就是系統環境變量了

vim /etc/profile
export xyz="hello"      

重新整理檔案内容

source /etc/profile      

更新下Python腳本

import os
import time
print(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. 使用者自定義變量,針對目前程序生效