[英]python 3: How to source a bash script and run it in same 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.