我有一個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