我有一个Python程序需要执行一个不同的进程(我使用subprocess.Popen
)。我需要这个执行的行为,就好像下面是通过在shell命令提示符用户输入:健壮地识别哪个shell运行
$ source path/to/some_file
$ ./some_program
我希望我会用shell=True
和某种形式的命令链来第一次运行source
,然后执行程序。不过,我面临着以下问题:
这将启动我的Python程序的外壳可能是bash
,sh
,tcsh
(或可能的csh
一番风味)。我需要根据哪个shell运行不同的some_file
。有没有办法确定这一点?无论是在Python中还是通过运行Popen(..., shell=True)
内的东西,都可以。
我正在考虑写一些“壳多语种”的获得来自不同炮弹输出不同,但我的壳技能(尤其在csh)都达不到这样的任务。我有什么选择?
可以通过使用[可执行](http://docs.python.org/2/library/subprocess.html#subprocess.Popen)参数与'壳= TRUE'强迫一个特定的壳。 – 2013-03-26 13:17:21
在Unix上,无论用户实际使用哪个shell,所使用的shell默认为/ bin/sh。 – Cairnarvon 2013-03-26 13:18:36
@Cairnarvon,是的,但/ bin/sh符合不同的Linux上的不同的东西。 – 2013-03-26 13:19:07