#linux #bash #shell #centos
#linux #bash #оболочка #centos
Вопрос:
Допустим, у меня есть исполняемый сценарий оболочки с именем foo.sh . Внутри это простое эхо «Привет, мир». Насколько я понимаю, когда я запускаю это через . /foo.sh , вызывается подоболочка, которая выполняет строку echo «Hello World».
Почему тогда я вижу вывод команды echo в моей основной оболочке / терминале? Я бы подумал, что вам нужно будет выполнить «источник. /foo.sh «вместо простого»./foo.sh » чтобы увидеть результат в вашей текущей оболочке.
Кто-нибудь из вас может помочь уточнить?
Ответ №1:
Стандартный вывод наследуется. Цитата из справочного руководства по Bash:
Среда выполнения команд
Когда должна выполняться простая команда, отличная от встроенной или командной функции, она вызывается в отдельной среде выполнения, которая состоит из следующего. Если не указано иное, значения наследуются от оболочки.
- открытые файлы оболочки, а также любые изменения и дополнения, указанные перенаправлениями на команду
- …