如果不使用新的2.6子進程模塊,我怎樣才能使用tcsh而不是bash來獲得os.popen或os.system來執行我的命令?我需要在執行一些其他命令前編寫一些在tcsh中編寫的腳本,我需要在python2.4中執行此操作。在python 2.4中,如何使用csh而不是bash來執行外部命令?
編輯 感謝您使用'tcsh -c'的答案,但我想避免這種情況,因爲我必須避免瘋狂。該字符串將被bash解釋,然後由tcsh解釋。我必須這樣做:
os.system("tcsh -c '"+re.compile("'").sub(r"""'"'"'""",my_cmd)+"'")
不能我只是告訴Python開闢一個「tcsh的」子,而不是一個「慶典」子?那可能嗎?
P.S. 我意識到bash是貓的喵喵,但我正在企業環境中工作,我要選擇而不是打一場tcsh vs bash的戰鬥 - 更大的魚來炒。
你是什麼意思的「來源」? – hop 2009-02-10 20:23:26
如果你執行一個像'source env_mod.csh'這樣的命令,那麼腳本會修改你當前的shell。如果您執行'tcsh -f env_mod.csh',則shell腳本將創建一個子shell,該子shell繼承當前shell的環境變量並在不修改父shell的情況下執行。 – 2009-02-10 21:51:41
示例包含您的〜/ .bashrc文件,該文件在啓動新的bash shell時會獲取「sourced」。 – 2009-02-10 21:53:34