これは実際には、Ruby、iTerm 2、Terminal、または zsh の問題ではありません。代わりに、*nix OS アプリが STDIN からの読み取りを処理する方法を理解していません。
あなたが見ている問題は、ディレクトリを-I
指定することです。$LOAD_PATH
その結果、Ruby は path/to/script をLOAD_PATH
変数として使用し、実行するスクリプトが見つからないため、STDIN からの入力を待ってハングします。
+を使用したり、再起動したりするのではなく、CNTRL+を使用します。これにより入力ストリームが閉じられ、実行するコマンドが見つからないため、Ruby が終了します。CCNTRLD
これは、次を使用してテストできます。
ruby -I /dev/null
コマンドラインで。Ruby は入力を待ってハングします。入力を閉じると、Ruby はすぐに終了します。もちろん、それが起こったことに気付かなかった場合は、Ruby に興味深いコマンドを打ち込んでしまい、CNTRL+が表示されるまで何もせずD、あらゆる種類の有益なメッセージを吐き出すことになるかもしれませんが、それは理解できることです。インタプリタに関する限り、入力はおそらくクレイジートークになるでしょう。
同じCNTRL+Dの組み合わせは、STDIN から読み取るときに、他のあらゆる種類の *nix プログラムからの入力を閉じるために使用されます。