在下面的代码片段(意味着在init.d下的环境中工作),我想执行test.ClassPath。 但是,我有麻烦的设定和通过CLASSPATH环境变量作为用户的.bashrc中定义。
这是我沮丧的来源:
- 当下面的脚本在使用模式下运行,它打印出的CLASSPATH OK(由$ HOME / .bashrc中)
- 当我运行它的根,它也显示CLASSPATH罚款(我已经设置了CLASSPATH /etc/bash.bashrc)
- 但是当我做“命令script.py”(模拟在init.d中启动时会发生什么),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()