Я попытаюсь объяснить это очень простым способом.
Они все двоичные файлы.Они запускаются как обычные процессы.У них есть необязательные и / или обязательные аргументы командной строки.Они присутствуют в одном из мест, определенных в переменной окружения $ PATH.Обычно это файлы / usr / bin или / usr / sbin, где вы найдете эти двоичные файлы.
Прежде чем искать эти места, ОС сначала ищет псевдонимы bash, которые определены в файле .bashrc.Псевдонимы Bash похожи на #defines в C. Подробнее о них можно прочитать здесь: https://mijingo.com/blog/creating-bash-aliases
Но прежде чем сделать это, он ищет встроенные команды, то есть команды, которые по умолчанию поставляются с оболочкой.Это наиболее часто используемые команды, встроенные в функциональные возможности оболочки, поэтому оболочке не нужно запускать процесс при каждом их вызове.
Например: «cd» - это встроенная оболочка, а «ls» - этоне
~ # type cd
cd is a shell builtin
~ # type ls
ls is /bin/ls