[問題] 要怎麼讀取環境變數?

看板Python作者 (shiyeh)時間7年前 (2017/06/29 14:49), 7年前編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
例如我現在有個shell script,叫做 env.sh ###============== #!/bin/sh export env1="123" export env2="456" ###============== 要透過python去拿env1, env2 我用這樣: ###========================= #!/usr/bin/python import os import subprocess subprocess.Popen('./env.sh', shell=True) print(os.environ['env1']) ###========================== 會得到 KeyError: 'env1' 我自己是覺得問題應該出在subprocess? 我不能分兩個動作做? 先透過subprocess去執行shell script, 再透過os.environ去拿env ? 何解QQ? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.180.105.193 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1498718959.A.177.html ※ 編輯: shiyeh (175.180.105.193), 06/29/2017 14:55:33

06/29 14:59, , 1F
source env.sh 試試看?
06/29 14:59, 1F

06/29 15:19, , 2F
Shell script 執行是在自己的 shell 裡, 不會影響外環境
06/29 15:19, 2F

06/29 15:19, , 3F
source ./env.sh 也不行XD
06/29 15:19, 3F

06/29 15:28, , 4F
試你的 env.sh 需求最好的解法可能不太一樣
06/29 15:28, 4F

06/29 15:29, , 5F
source 是 Bash builtin function, 不能當程式執行
06/29 15:29, 5F

06/29 15:30, , 6F
http://d.pr/n/qziNs8+ 這是一個方法
06/29 15:30, 6F

06/29 17:38, , 7F
感謝指正
06/29 17:38, 7F
文章代碼(AID): #1PLABl5t (Python)