上下文:我在我的 Mac 上运行了这个片段,并注意到字符串-n散布在乱码输出中。答案是sh在 Ubuntu 上理解-n标志,而sh在我的 Mac 上则不理解。

如您所见,python 将字符串发送到标准输出,"-n abc\n"而不是预期的"abc".
通话是否os.system无法分离-n和abc?zsh(倒数%是 zsh 表示 EOF 的方式)和 bash 都会发生,但如果我没记错的话,python 调用不应该调用任何 shell(不是因为我读过任何这样说的东西,而是基于我的常识)(编辑:原来我完全错了,系统运行一个子shell)
看看 ruby 是如何做的:

还有一些测试:
看起来脚本已发送到,sh但此时 shell 的环境变量仍然是zsh. 说得通。我没有做任何清理环境的事情......也许sh没有自动设置$SHELL。