Это не проблема Ruby, iTerm 2, Terminal или zsh. Вместо этого он не понимает, как приложения nix OS обрабатывают чтение из STDIN.
Проблема, которую вы видите, заключается в том, что -I
указывает каталог $ LOAD_PATH
. В результате ruby использует ваш путь/в/script как переменную LOAD_PATH
, а затем висит, ожидая ввода из STDIN, потому что не видел скрипта для запуска.
Вместо использования CNTRL + C или перезапуска используйте CNTRL + D . Это закрывает входной поток, что приведет к выходу ruby из-за отсутствия команд для запуска.
Вы можете проверить это, используя:
ruby -I /dev/null
в командной строке. Рубин будет висеть, ожидая ввода. Закройте вход, и ruby немедленно выйдет. Конечно, если вы не понимаете, что это произошло, вы можете набрать некоторые интересные команды Ruby, которые ничего не сделают, пока не увидите CNTRL + D , то может выплюнуть всевозможные информационные сообщения, но это понятно, поскольку вход, вероятно, будет сумасшедшим, если говорить о интерпретаторе.
Эта же комбинация CNTRL + D используется для закрытия ввода от всех видов других программ * nix при чтении из STDIN.