簡體   English   中英

如何使用 python 將 shell 腳本作為源運行以設置環境變量?

[英]How to run a shell script as source using python to set environment variables?

我創建了一個 shell 腳本,用於設置環境變量。 我正在嘗試通過 python 腳本運行此腳本,但每次都顯示錯誤為“找不到命令”。 我想運行 shell 腳本作為設置環境變量的源。

Python : 2.7.5
Script Name : abc.sh
Normal Execution on shell : source abc.sh

嘗試使用

python : os.system ("source abc.sh") 

這顯示了一個錯誤

"Command not found".

任何人都可以幫助我如何通過 python 成功運行此腳本作為源代碼?

錯誤是因為source是 shell“內置”命令——它不是 $PATH 中的外部命令。 但更根本的問題是,由於環境變量的工作方式,您嘗試做的事情將無法正常工作。

環境變量對每個進程都是私有的。 它們不是全局的,一個進程不能修改不同進程的環境變量; 至少不是沒有其他進程的合作。 當您啟動一個進程時,它會繼承父進程的環境變量的副本,或者父進程向它產生的子進程提供一組顯式的環境變量。 無論哪種情況,每個進程都有自己的私有環境變量。 所以即使你做了

os.system("sh -c 'source abc.sh'")

它只會修改sh子進程的環境變量。 它不會修改 python 進程的環境。

最簡單的解決方案是啟動 shell,執行source abc.sh ,然后exec您的 python 程序。 如果您絕對必須通過在 python 程序中運行 shell 腳本來設置環境變量,則您的腳本必須將變量寫入標准輸出。 然后,您的 python 程序將必須讀取 output 並對其進行解析以提取環境變量名稱和值,然后調用os.putenv()在 python 進程中設置每個變量。

在命令提示符下嘗試您的命令。 這是因為您沒有在命令 python: os.system ("source abc.sh") 中定義 os。 您的計算機無法訪問 os.system。 您首先需要安裝其中 os.system 模塊的 python 的軟件包。

暫無
暫無

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

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