Я только что начал использовать Cmder на Windows 7 и понимаю, что это эмулятор консоли для Windows, который дает лучший опыт, чем использование cmd. Однако, как я понимаю, эмулятору необходимо запустить оболочку, чтобы передавать пользовательские команды в ОС, так что в Windows какая здесь оболочка? CMD является оболочкой по умолчанию для Windows?
Было бы полезно просто понять, как связаны между собой эти инструменты.
решение1
Windows поставляется с двумя встроенными оболочками командной строки: Cmd.exe и PowerShell 5. (Графический интерфейс Windows действительно является «оболочкой» в определенном смысле, но это некоманда(Оболочка, и не относится к вопросу.)
Cmder по умолчанию использует Cmd.exe, нотяжелонастраивает его — фактическое интерактивное приглашение, которое вы видите, не является обычным приглашением Cmd.exe; оно отображается ConEmu, clink
который внедряется в процесс Cmd. (Все окно «Cmder» на самом делеConEmu.)
Таким образом, технически все ваши команды по-прежнему выполняются через Cmd, но именно внедренная библиотека Clink обеспечивает расширенные функции, такие как автодополнение по клавише Tab и сочетания клавиш в стиле Readline.
Но кроме Cmd.exe, можно запуститьлюбая другая оболочкав Cmder, например PowerShell или Bash (который не является частью Windows, но входит в стандартную комплектацию Linux и часто устанавливается вместе с Git для Windows).
Однако, насколько я понимаю, эмулятору необходимо запустить оболочку, чтобы передавать команды пользователя в ОС.
В каком-то смысле да, хотя оболочки не нужны только для «запуска» команд (любой процесс может запустить любой .exe-файл в любое время; именно так изначально создается оболочка); скорее их задача заключается в том, чтобыинтерпретироватькоманды – они предоставляют такие возможности, как циклы if/for/while, расширение %variable% и т. д. Однако, помимо этого, у них нет никакого специального доступа к возможностям ОС, который не был бы у других программ. 1
(Так что в теории, терминалмоготображать собственные подсказки и реализовывать собственный командный язык, просто это делается редко, поскольку большинство людей привыкли, например, к синтаксису Bash.)
1 (Это применимо к Windows и всем Unix-подобным системам, но не обязательно квсе(Операционные системы. Например, командная оболочка DCL в OpenVMS на самом деле имеет больше привилегий, чем обычные программы, как это было во многих операционных системах того времени — вероятно, именно Unix нарушил традицию, поскольку ее оболочка была совершенно обычным и заменяемым инструментом.)