Внутренние и внешние команды

Внутренняя команда - это команда, которая встроена конкретно в bash, а Внешняя команда - это исполняемый бинарный файл на диске. Определить тип команды

  type cat
  type type
  type grep       

Чтобы отобразить полный тип, например если алиас указывает на внешнюю команду, затем где лежит команда

    $ type -a ls
 
    ls is aliased to `ls --color=auto'
    ls is /usr/bin/ls
    ls is /bin/ls
   alias
   alias catp=’cat /etc/passwd’
   unalias catp 
   

Определение местоположения исполняемого файла

  which grep

Определение местоположения исполняемого файла + исходники + man

  whereis grep
  whereis ssh |tr ' ' '\n'

enable – Встроенная команда Linux позволяющая разрешать или запрещать встроенную команду.

Посчитать количество встроенных команд

  enable | nl 
  1. ищется алиас, соответствующий имени команды;
  2. если алиас не найден, ищется внутренняя команда;
  3. если внутренняя команда не найдена, происходит поиск исполняемого файла в каталогах, перечисленных в переменной PATH;
  4. если исполняемый файл с именем команды не найден ни в одном из каталогов с переменной PATH, bash выдаст ошибку (command not found).

Когда поиск команды идет по директориям, описанным в переменной PATH, то будет выполнена первая найденная команда.

После того, как bash найдет исполняемый файл, она записывает эту информацию в таблицу соответствий имени команды исполняемому файлу. Это происходит для того, чтобы в будущем сократить время поиска (не обращаться лишний раз к диску). Увидеть данную таблицу можно с помощью команды hash

root@host:~$ hash
hits	command
   1	/bin/rm
   1	/usr/bin/man
   1	/bin/ls

hits - сколько раз была выполнена команда в текущей сессии. Очистить данную таблицу можно с помощью той же команды hash с ключом -r