我不能在 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])