In the following code snippet (meant to work in an init.d environment) I would like to execute test.ClassPath. However, I'm having trouble setting and passing the CLASSPATH environment variable as defined in the user's .bashrc.
Here is the source of my frustration:
- When the below script is run in use mode, it prints out the CLASSPATH OK (from $HOME/.bashrc)
- when I run it as root, it also displays CLASSPATH fine (I've set up /etc/bash.bashrc with CLASSPATH)
- BUT when I do "sudo script.py" (to simulate what happens at init.d startup time), the CLASSPATH is missing !!
The CLASSPATH is quite large, so I'd like to read it from a file .. say $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()