Python Popen 无法在 CentOS/Red Hat 中打开 bash shell。



我不能在 python 2.7 的 CentOS 中打开 bash shell,我可以在 python 2.6.6 Debian 中打开。发生了哪些变化?

我尝试了一个简单的 bash 过程替换:

from subprocess import Popen
cmd="""cat <<'EOF'
this is
test $unchanged
EOF
"""
Popen('cat <(%s)' % cmd, shell=True, executable='/bin/bash')

在 Debian 中,这有效,而在 CentOS 中则不行:

/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `cat <(cat <<'EOF''

区别在于:

  • Debian:Python 2.6.6,/bin/sh由dash提供。
  • CenOS(Red Hat):Python 2.7,/bin/sh由bash提供

因此,在 CentOS 中,executable=/bin/bash根本没有被尊重。我错过了什么吗?

如果你在参数中写/bin/bash 怎么办?

Popen(['/bin/bash', '-c', 'cat <(%s)' % cmd])

相关内容

  • 没有找到相关文章

最新更新