Подтвердить что ты не робот

Cygwin Bash.exe vs. mintty.exe

Я пытаюсь запустить команды Unix на bash.exe и mintty.exe, найденные в Cygwin64/bin (например, usr/bin/bash.exe). Когда я пытаюсь запустить коммит Unix ls, я получаю bash: ls: command not found. Однако, когда я нажимаю на значок рабочего стола для терминала Cygwin и вхожу ls в результирующий терминал Cygwin, коммиты Unix, такие как ls работают! Почему команды Unix не работают на bash.exe и mintty.exe, но на терминале результаты от нажатия на значок? Кроме того, какова разница между двумя оболочками, полученными с помощью bash.exe и mintty.exe?

4b9b3361

Ответ 1

Эти две программы никоим образом не являются альтернативами друг другу. Bash - shell, а MinTTY - эмулятор терминала . MinTTY обычно запускает вашу пользовательскую оболочку внутри себя, которая может быть или не быть Bash. То есть вы обычно используете две программы вместе.

Если вы изучите ярлык MinTTY, созданный Cygwin setup.exe, вы обнаружите, что это не простой запуск программы. Он запускает его как mintty -, в котором MinTTY запускает вашу пользовательскую оболочку как оболочку "login".

Это проблема, с которой вы столкнулись. Если вы запустите bash.exe без параметров, вы получите только голую оболочку с настройкой по умолчанию, что означает, что она не делает такие вещи, как добавление Cygwin /bin к PATH. Аналогично, если вы запускаете mintty.exe без параметров, он запускает вашу пользовательскую оболочку без параметров. Когда вы указываете тире mintty.exe вместо имени программы, она запускает вашу пользовательскую оболочку в качестве оболочки входа: bash -l, а не только bash. Этот параметр заставляет Bash читать в кучу сценариев запуска сразу после запуска, который устанавливает команду PATH и многое другое.

Таким образом, если вам приходилось запускать bash.exe за пределами MinTTY по какой-либо причине, вы могли бы сказать bash -l, чтобы поведение было несколько ближе к поведению bash.exe при запуске через mintty -. Однако вы потеряете все функции эмулятора терминала. MinTTY имеет гораздо лучшее поведение при копировании, чем консоль Windows, например, особенно в Windows 8 и старше.

(Windows 10 включила улучшенную консоль, но MinTTY все еще лучше, ИМХО, особенно при работе с Cygwin.)

Скажите man mintty в командной строке Cygwin для более полного объяснения всех вещей, которые MinTTY делает для вас. Этот конкретный вопрос был дан в разделе INVOCATION страницы руководства MinTTY.