代码之家  ›  专栏  ›  技术社区  ›  Ross Rogers

在Python2.4中,如何使用csh而不是bash执行外部命令?

  •  4
  • Ross Rogers  · 技术社区  · 15 年前

    如果不使用新的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'子进程吗?有可能吗?

    附笔。 我知道巴什是猫叫声,但我在公司工作,我会选择 打一场tcsh对bash的战争——更大的鱼来炸。

    3 回复  |  直到 15 年前
        1
  •  11
  •   anthony    15 年前

    只需在shell前面加上前缀作为命令的一部分。我没有安装tcsh,但是zsh:

    >>> os.system ("zsh -c 'echo $0'")
    zsh
    0
    
        2
  •  5
  •   Jay    15 年前

    怎么样:

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

    #!/bin/tcsh
    

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

        3
  •  -1
  •   Chris Bunch    15 年前

    tcsh :

    >>> os.environ['SHELL'] = 'tcsh'
    >>> os.environ['SHELL']
    'tcsh'
    >>> os.system("echo $SHELL")
    tcsh