На работе я часто пользуюсь Cygwin, потому что он предлагает мне маленький оазис в бескрайней пустыне Windows. Я неизбежно заканчиваю тем, что запускаю некоторые не-Cygwin программы через оболочку bash, такие как сценарии сборки (пакетные файлы, созданные внутри компании) и исполняемые файлы Subversion CLI (у меня установлены Windows). В 99% случаев у меня нет проблем с этой настройкой. Однако другой 1% вызывает странную проблему:
Как для сценариев сборки, так и для SVN большую часть времени клавиша ввода интерпретируется правильно. Например, я запустил скрипт создания базы данных, и он запросит у меня имя сервера. Я набираю "localhost" и нажимаю ввод. Все в порядке. Затем он доходит до конца, если есть ошибки, и печатает вещи, используя more
. Никакая клавиша, которую я нажимаю, не распознается more
. Я должен Ctrl-C из этого.
Аналогично, если я делаю обновление Subversion, обычно все в порядке. Однако в случае интерактивного разрешения конфликта я обычно набираю «tf» для «их полного» и нажимаю ввод, но ничего не происходит. Я должен нажать Ctrl-C и заново запустить обновление с принудительным слиянием или использовать TortoiseSVN в Windows, чтобы сделать это.
Есть идеи, почему Cygwin случайно не передает ключ ввода в программы? Я считал, что это может быть связано с окончаниями строк в стиле Unix против Windows, поэтому я попытался ввести эти символы вручную, но, похоже, это не имеет значения. Спасибо.
Редактировать : Я только что повторил это со мной, и я кое-что понял. Это был SVN, запрашивающий у меня пароль. Я набрал пароль, который он отображал на экране (плохо), и нажал ввод ... ничего. Нажмите ввод еще несколько раз, курсор перемещается, но ничего не происходит. Я нажимаю Ctrl-C, и он возвращает меня обратно в bash, который затем говорит: «bash: [мой пароль]: команда не найдена», а затем количество новых запросов, равное числу раз, когда я нажимаю клавишу ввода. Так что произошло то, что ввод никогда не поступал в SVN, но каким-то образом был прочитан bash после выхода из SVN. Я подумал, что это может помочь кому-то понять, что происходит.