在下面的代碼片段(意味着在init.d環境中工作)我想執行test.ClassPath。但是,我在設置和傳遞用戶的.bashrc中定義的CLASSPATH環境變量時遇到了問題。Python和環境變量
這裏是我沮喪的來源:
- 當以下腳本在使用模式下運行,它打印出的CLASSPATH OK(由$ HOME/.bashrc中)
- ,當我運行它它也顯示CLASSPATH罰款(我已經設置了CLASSPATH的/etc/bash.bashrc)
- 但是當我做「sudo script.py」(模擬init.d啓動時發生了什麼),CLASSPATH不見了 !!
的CLASSPATH是相當大的,所以我想從文件中讀取它..比如$ HOME /的.classpath
#!/usr/bin/python
import subprocess
import os.path as osp
import os
user = "USERNAME"
logDir = "/home/USERNAME/temp/"
print os.environ["HOME"]
if "CLASSPATH" in os.environ:
print os.environ["CLASSPATH"]
else:
print "Missing CLASSPATH"
procLog = open(osp.join(logDir, 'test.log'), 'w')
cmdStr = 'sudo -u %s -i java test.ClassPath'%(user,) # run in user
proc = subprocess.Popen(cmdStr, shell=True, bufsize=0, stderr=procLog, stdout=procLog)
procLog.close()
我在調用腳本來模擬init.d調用這個腳本時發生了什麼的時候,我會sudo。那麼,我如何在init.d時間使用這個想法呢? – fodon
我不確定我瞭解你的問題。我建議如何使用'env'命令使現有的腳本工作。我*認爲*這將做你想做的。如果這不符合您的要求,請更新您的問題(而不是將其變成一個巨大的評論主題),以表明您想要的行爲與您使用此建議的行爲不同。 – larsks