子进程交互式bash行为

时间:2017-08-08 03:51:19

标签: python bash subprocess

我在Mac OS X Sierra上使用python 3.5

以下代码按预期工作,打印'hello world' 5次:

for _ in range(5):
    print(subprocess.check_output(['/bin/bash', '-i', '-c', 'echo hell world']))

虽然这一个导致脚本停止,但只打印一次目录列表。

for _ in range(5):
    print(subprocess.check_output(['/bin/bash', '-i', '-c', 'ls']))

显示

... my directory listing ...
[2]+ Stopped    python demo.py

我将ls中的~/.bashrc别名为ls -alf。如果我删除别名,该程序似乎工作正常。在交互模式下启动bash有什么问题吗?

编辑:

有趣的是,我可以通过破解命令来强制执行正确的行为:

for _ in range(5):
    print(subprocess.check_output(['/bin/bash', '-i', '-c', 'echo; ls']))

现在ls不会再杀死脚本,无论它是否有别名。有什么想法吗?

0 个答案:

没有答案