Как выполняемые строки подоболочки печатаются в основной оболочке без запуска исходной команды?

#linux #bash #shell #centos

#linux #bash #оболочка #centos

Вопрос:

Допустим, у меня есть исполняемый сценарий оболочки с именем foo.sh . Внутри это простое эхо «Привет, мир». Насколько я понимаю, когда я запускаю это через . /foo.sh , вызывается подоболочка, которая выполняет строку echo «Hello World».

Почему тогда я вижу вывод команды echo в моей основной оболочке / терминале? Я бы подумал, что вам нужно будет выполнить «источник. /foo.sh «вместо простого»./foo.sh » чтобы увидеть результат в вашей текущей оболочке.

Кто-нибудь из вас может помочь уточнить?

Ответ №1:

Стандартный вывод наследуется. Цитата из справочного руководства по Bash:

Среда выполнения команд

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

  • открытые файлы оболочки, а также любые изменения и дополнения, указанные перенаправлениями на команду