Что происходит внутренне, когда мы вводим команду в терминале?

Скажите, что мы использовали команду "wget www.myurl.com", прямо после того, как нажатие входит, терминал проверяет где-нибудь на установленную программу, названную wget, и затем проверяет на аргументы и проверяет где-нибудь о том, как программа, как предполагается, работает?

В которых областях это проверяет и как это проверяет аргументы?

1
задан 7 February 2020 в 12:08

2 ответа

Принятие Вас использует удар в качестве оболочки, это будет искать весь набор каталогов через переменную окружения PATH.

Обратите внимание, что псевдонимы и функции имеют приоритет к сценариям/двоичным файлам. Можно использовать echo "$PATH" перечислять каталоги (двоеточие, используемое в качестве разделителя).

2
ответ дан 20 February 2020 в 22:58

Терминал на самом деле не делает ни одного из этого, вместо этого это - программа, работающая в терминале, который обрабатывает команды Bash по умолчанию (оболочка).

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

Когда Вы работаете wget www.myurl.com, Bash:

  1. Разделения это в слова и обработки первое слово как название команды, т.е. wget
  2. Проверки, если название команды является псевдонимом, являются функцией и/или имеют хешированный путь
    • Давайте примем нет
  3. Регистрирует каждый каталог PATH переменная среды для исполняемого файла с тем именем
    • В моем случае wget в /usr/bin/wget. Выполненный type wget лично убеждаться.
  4. Выполняет exectuable, /usr/bin/wget, с аргументами wget (название команды) и www.myurl.com (параметр командной строки Вы предоставили),
    • Bash не проверяет аргументы сам
  5. Ожидает команды для завершения и возвращает ее статус выхода

Для получения дополнительной информации посмотрите Деятельность Shell в руководстве Bash и ссылках там.

1
ответ дан 20 February 2020 в 22:58

Другие вопросы по тегам:

Похожие вопросы: