Простое расширение команд в bash

Когда выполняется простая команда, shell выполняет следующие расширения, назначения и перенаправления слева на право.

  1. Слова которые парсер отметил как заданные переменные(те, которые предшествуют имени команды) и перенаправления сохраняются для последующей обработки.

  2. Слова которые не являются заданными переменными или перенаправлением расширения. Если слова остаются после расширения, первое слово берется имя команды, а остальные слова являются аргументами.

  3. Перенаправления проводятся так, как было описано выше в статье Перенаправления в bash.

  4. Текст после «=» в каждой назначенной переменной подвергается расширению тильды, расширению параметров, подстановке команд, арифметических расширений и удалению кавычек перед назначением переменной.

Если нет результатов имени команды, присвоенные переменные влияют на среду текущего командного интерпретатора. В ином случае, переменные добавляются в среду выполняемой команды и не влияют на среду текущего командного интерпретатора. Если любое задание пытается присвоить значение переменной только для чтения, возникает ошибка, и команда выходит с нулевым статусом.

Если нет результатов имени команды, перенаправления выполняются, но не влияют на среду текущего командного интерпретатора. Ошибка перенаправления, заставляет команду выйти с нулевым статусом.

Если есть имя команды, которое осталось после расширения, выполнение продолжается как описано ниже. В ином случае, команда, завершает работу. Если одно из расширений содержит подстановки команд, статусом выхода команды является статус выхода последней выполняющейся команды подстановки. Если же нет команды замены, команда выходит со статусом равным нулю.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *