コンテキスト:このスニペット-nを Mac で実行したところ、文字化けした出力に文字列が散らばっていることに気付きました。答えは、shUbuntu では-nフラグを理解できるがsh、私の Mac では理解できないということです。

ご覧のとおり、python は"-n abc\n"、期待される"abc".
コールはとos.systemを分離できませんか? zsh(反転はzshがEOFを示す方法です)とbashの両方で発生しますが、間違っていなければ、python-callでシェルを呼び出すべきではありません(そう言うものを読んだからではなく、私の常識に基づいています) )(編集:私は完全に間違っていることが判明し、システムはサブシェルを実行します)-nabc%
ruby がどのように動作するかを見てください:

そして、さらにいくつかのテスト:
スクリプトが送信されたように見えshますが、その時点でのシェルの環境変数はまだzsh. 理にかなっています。環境をきれいにするために何もしませんでした...おそらくsh自動的に設定されません$SHELL。