注意:这与Python: Persistent shell variables in subprocess不是同一个问题,因为该问题实际上是关于环境变量,而不是 shell 变量。
我正在尝试使用 shell 内置time
命令自动化我在 csh 中执行的基本基准测试。time
您可以通过在 shell 中设置同名变量来调整输出,如下所示:
set time=(1000000000 "%U %S %E %P %W %X %D %K %M %F %R %I %O %r %s %k %w %c")
但是,这当然不是环境变量,所以你不能env
在构造函数的参数中传递它subprocess.Popen
(我首先尝试过......)。您可以通过滥用(无论如何,imo)cmd
论据来将其破解,然后您的实际工作(缩短以很好地显示):
time_cmd = 'set time=(1000000000 "%U %S %E %P %c"); time ./some_func'
p = subprocess.Popen(cmd, executable="/bin/csh", shell=True, ...)
这就像你所期望的那样工作,但它似乎不是正确的方法(cmd
当你想要调整一堆不同的 shell 行为时,可能会导致一些非常可怕的构造)。
subprocess
除了这个kludge之外,还有其他方法可以设置shell变量吗?