0

我无法在 CentOS 中使用 python 2.7 打开 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根本没有被尊重。我错过了什么吗?

4

1 回答 1

0

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

Popen(['/bin/bash', '-c', 'cat <(%s)' % cmd])
于 2012-11-22T11:50:57.487 回答