Как команды bash (CLI) внутренне работают в Linux? - PullRequest
0 голосов
/ 26 февраля 2019

Я хотел понять, как именно терминал bash проверяет введенные мной команды, а затем выдает ожидаемый результат.Пример: Когда я ввожу «ls», как он узнает, что это допустимая команда и как он дает мне список файлов?Я не пытаюсь понять команду "ls" в частности, но в целом, как эти команды работают.

Ответы [ 2 ]

0 голосов
/ 01 августа 2019

Я попытаюсь объяснить это очень простым способом.

Они все двоичные файлы.Они запускаются как обычные процессы.У них есть необязательные и / или обязательные аргументы командной строки.Они присутствуют в одном из мест, определенных в переменной окружения $ 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
0 голосов
/ 26 февраля 2019

Он ищет вашу среду $ PATH.Переменная и рекурсивно просматривает каталоги PATH для поиска двоичного файла, соответствующего вашей команде.Например, / bin / ls, например

Вы можете проверить свой PATH, введя 'echo $ PATH', или изменить его на 'export PATH = $ PATH: / one / more / dir'

Также есть псевдонимы bash, которые вы можете настроить для сопоставления одной команды другой

...