4

如果不使用新的 2.6 子进程模块,我怎样才能让 os.popen 或 os.system 使用 tcsh 而不是 bash 来执行我的命令?在执行一些其他命令之前,我需要获取一些用 tcsh 编写的脚本,我需要在 python2.4 中执行此操作。

编辑感谢使用'tcsh -c'的答案,但我想避免这种情况,因为我必须逃避疯狂。该字符串将由 bash 解释,然后由 tcsh 解释。我将不得不做类似的事情:

os.system("tcsh -c '"+re.compile("'").sub(r"""'"'"'""",my_cmd)+"'")

我不能告诉 python 打开一个“tcsh”子进程而不是一个“bash”子进程吗?那可能吗?

PS 我意识到 bash 是猫的喵喵叫,但我在公司环境中工作,我将选择打 tcsh 与 bash 之战——更大的鱼要炸。

4

3 回答 3

11

只需将 shell 作为命令的一部分添加前缀即可。我没有安装 tcsh 但安装了 zsh:

>>> os.system ("zsh -c 'echo $0'")
zsh
0
于 2009-02-10T17:53:19.697 回答
5

怎么样:

>>> os.system("tcsh your_own_script")

或者只是编写脚本并添加

#!/bin/tcsh

在文件的开头,让操作系统来处理。

于 2009-02-10T17:50:02.310 回答
-1

只需将 shell 设置为tcsh

>>> os.environ['SHELL'] = 'tcsh'
>>> os.environ['SHELL']
'tcsh'
>>> os.system("echo $SHELL")
tcsh
于 2009-02-10T18:06:53.177 回答