我想确保os.system('env')
不包含在~/.bashrc
中导出为export myname=csj
的特定变量myname
。
因此,我编写了以下Python代码:
import os
def print_all():
print "os.environ['myname']=%s" % os.environ.get('myname')
print "os.getenv('myname')=%s" % os.getenv('myname')
os.system('env | grep myname')
print
def delete_myname():
if 'myname' in os.environ: os.environ.pop('myname')
if os.getenv('myname'): os.unsetenv('myname')
print_all()
os.putenv('myname', 'csj2')
print "---------------------"
delete_myname()
print_all()
os.putenv('myname', 'csj3')
print "---------------------"
delete_myname()
print_all()
我认为检查os.environ['myname']
和os.getenv('myname')
,
如果存在则删除它们,可以确保os.system('env | grep myname')
不会获取任何结果。
然而,实际结果是:
os.environ['myname']=csj
os.getenv('myname')=csj
myname=csj
---------------------
os.environ['myname']=None
os.getenv('myname')=None
---------------------
os.environ['myname']=None
os.getenv('myname')=None
myname=csj3
我不明白为什么在os.system('env | grep myname')
中我仍然得到csj3
?
myname=csj3
是否会持续存在,还是只有第四轮中的myname=csj4
? - chepnerwhile [ 1 ]; do python env.py ; sleep 1; done
来执行脚本,总是得到相同的结果。 - CSJif 'myname' in os.environ: os.environ.pop('myname')
,奇迹般地,os.system('env | grep myname')
没有输出任何内容,问题似乎得到解决。虽然我还不知道为什么... - CSJ