簡體   English   中英

使用python腳本在Linux環境中添加$ PATH

[英]Add in $PATH for linux environment using python script

需要將此路徑-> / home / ubuntu / folderA添加到linux ubuntu中的PATH環境變量中。

更新資料

print(os.environ["PATH"])

path = "/home/ubuntu/folderA"
os.environ["PATH"] += os.pathsep + path

print(os.environ["PATH"])
#Can see the newly added path here when i print

但是,我仍然無法訪問路徑。

當我執行printenv ,我仍然看不到路徑。

嘗試了os.getenv("PATH")以查看路徑是否已更新,但仍然是同一回事

如果我使用以下命令手動執行此操作,則使用printenv ,路徑在那里。

export PATH=$PATH:/home/ubuntu/folderA

我需要的是使用python腳本中的第一個方法更新路徑,然后繼續其余方法。

希望有人可以看看。 謝謝。

最終更新:原來我運行python腳本時追加了路徑。 只是在腳本完成之后,該路徑將不會保留。 因此,當我執行printenv ,路徑未顯示出來。

您可以使用os.environ["PATH"]

檢查此問題以獲取想法。

sys.pathlist 類型 因此,您應該使用內置的 append()方法添加一個 string

 
 
 
 
  
  
  import sys sys.path.append("/home/ubuntu/folderA")
 
 
  

os.environ\\['PATH'\\]投票使我進一步研究了sys.pathos.environ\\['PATH'\\]之間的區別。

要為當前用戶更新路徑變量,請使用os.environ ['PATH']。

需要注意的一點是path變量是一個字符串對象,在循環內對其進行更新將消耗內存。 如果要從列表更新,請使用以下方法。

# os.pathsep is the character that separates different paths in the path variable
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)

這是因為在類似Unix的系統上,每個進程的環境都是唯一的。

發生的是,當您運行腳本時,操作系統會將當前環境變量復制到新環境中 在這個新環境中,您的腳本會修改PATH變量。 腳本退出后,該環境將被破壞。

嘗試運行此命令以查看我在說什么:

path = "/home/ubuntu/folderA"
os.environ["PATH"] += os.pathsep + path
print(os.environ["PATH"])
os.system('printenv')

您應該看到已修改的PATH變量。

如果要修改PATH變量以進行進一步的處理,則必須執行以下操作之一。

  1. 從腳本啟動bash shell。 使用os.system('bash')將啟動一個子shell進程,該進程將從腳本繼承PATH變量。

  2. 首選方法是將腳本更改為類似這樣的內容

      path = "/home/ubuntu/folderA" print('export PATH=' + os.environ["PATH"] += os.pathsep + path) 

    然后像這樣執行你的腳本

      eval $(python path.py) 

    這將在啟動腳本的shell中獲得修改后的路徑。 請注意,在Windows類型系統上,情況完全不同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM