Python設定Linux環境變數問題

2021-09-28 16:15:42 字數 2399 閱讀 6902

問題1:通過export abcd=abcd方式設定環境變數,獲取不到設定值

>>

>

import commands

>>

>

import os

>>

> cmd =

"export abcd=abcd"

>>

> env = commands.getoutput(cmd)

>>

>

print os.getenv(

"abcd"

)none

>>

>

問題2:通過os.environ[『abcd』] = 'abcd』方式設定環境變數,可以獲取到設定值,但只在python程序中有效,執行完畢後無法獲取
>>

>

import os

>>

> cmd =

"export abcd=abcd"

>>

> os.environ[

'abcd']=

'abcd'

>>

>

print os.getenv(

"abcd"

)abcd

>>

>

退出後,查詢環境變數,查不到

[root@localhost ~]

# env|grep abcd

[root@localhost ~]

#

或將其寫成指令碼

#!/usr/lib/python

# -*- coding: utf-8 -*-

import os

defset_env()

: os.environ[

'abcd']=

'abcd'

env = os.getenv(

"abcd"

)print env

if __name__ ==

"__main__"

: set_env(

)

執行:

[root@localhost env]

# python ./env.py;echo $abcd

abcd

[root@localhost env]

#

設定成功了觀景變數abcd,但是還是取不到值。

問題分析:

對於環境變數的設定來說,python直接執行export abcd=abcd是無法設定成功的,設定方法可以通過os.environ['abcd'] = 'abcd'來設定,但是由於python執行是啟動新的程序,設定的環境變數只在該程序內有效,所以env.py執行完畢後也無法再獲取到設定的環境變數。

解決辦法:

我們都知道直接在shell中執行export abcd=abcdefg是可以成功設定的,也就是說在標準輸出中執行該命令是可以設定為session級別的環境變數(其實也是程序級別,在shell中在啟動程序就屬於該shell的子程序是可以繼承父程序的環境變數),所以可以通過echo $abcd命令再次查到結果。

如:

[root@localhost ~]

# export abcd=abcdefg

[root@localhost ~]

# echo $abcd

abcdefg

[root@localhost ~]

#

所以要通過python指令碼設定環境變數,就可以將export命令定向到標準輸出,即print

更改指令碼為:

#!/usr/lib/python

# -*- coding: utf-8 -*-

import os

from pipes import quote

defset_env()

:print

"export abcd={};"

.format

(quote(

"abcd"))

if __name__ ==

"__main__"

: set_env(

)

執行:

[root@localhost env]

# eval $(python ./env.py);echo $abcd

abcd

[root@localhost env]

# env|grep abcd

abcd=abcd

[root@localhost env]

#

Linux語言環境設定

程式執行使用一套語言需要有字符集 資料 和字型 顯示 locale是根據計算機使用者所使用的語言,所在國家或者地區,以及當地的文化傳統所定義的乙個軟體執行時的語言環境。一 locale詳解 在 linux 中通過 locale 來設定程式執行的不同語言環境,locale 由 ansi c 提供支援。...

Linux語言環境設定

程式執行使用一套語言需要有字符集 資料 和字型 顯示 locale是根據計算機使用者所使用的語言,所在國家或者地區,以及當地的文化傳統所定義的乙個軟體執行時的語言環境。一 locale詳解 在 linux 中通過 locale 來設定程式執行的不同語言環境,locale 由 ansi c 提供支援。...

Linux中Python環境變數的設定

這種新增python path環境變數的方式,只在當前指令碼程式範圍內起作用。若要在整個linux環境中起作用,就要新增設定linux的pythonpath變數。jxj ubuntu1 tffrcnn python python 2.7.12 default,nov 192016,06 48 10 ...