В чем разница между встроенными командами оболочки (например, cd
или echo
) и сочетаниями клавиш оболочки (например, ctrl+u
или ctrl+l
)?
Мне кажется, что оба варианта «встроенные». В чем их основное различие с точки зрения архитектуры системы?
Лично я использую Bash, но считаю, что этот вопрос актуален и для многих других sh
оболочек.
решение1
Большинство встроенных функций изменяют состояние/поведение оболочки («навсегда») echo
и printf
являются исключениями.
^U
и ^L
являются привязками клавиш. Они просто обрабатывают редактирование строки ввода. Вы могли бы сделать то же самое без этих функций. Они просто экономят время. После выполнения команды не имеет значения, использовалась ли ранее функция привязки клавиш.
Возможно, наиболее очевидным отличием является то, что привязки клавиш не являются командой, которую можно запустить из командной строки. Вам нужна встроенная команда ( bind
) для их настройки (shell "изменение состояния").