Подтвердить что ты не робот

Что происходит, когда файл является "источником" -d в контексте Unix/Linux?

Я видел сценарии оболочки, которые включают строку, такую ​​как:

source someOtherFile

Я знаю, что приводит к выполнению содержимого someOtherFile, но каково значение source?


Последующие вопросы: Может ли ЛЮБОЙ script быть источником или только определенным типом скриптов? Существуют ли какие-либо побочные эффекты, кроме переменных среды, когда источник script (в отличие от обычного его выполнения)?

4b9b3361

Ответ 1

Выполнение команды source в script выполняет script в контексте текущего процесса. Это означает, что переменные окружения, установленные script, остаются доступными после завершения работы. Это контрастирует с тем, что обычно выполняется script, и в этом случае переменные среды, заданные в новообразованном процессе, будут потеряны после выхода script.

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

Ответ 2

Если вы сообщите оболочке, например. bash, чтобы прочитать файл и выполнить команды в файле, он называется sourcing. Главное, текущий процесс (shell) делает это, а не новый дочерний процесс.

В BASH вы можете использовать команду source или просто . для источника файла.

Ответ 3

source - это команда Unix, которая оценивает файл, следующий за командой, в виде списка команд, выполняемых в текущем контексте. Вы также можете использовать . для поиска файла.

source my-script.sh;
. my-script.sh;

Обе команды будут иметь тот же эффект.

Напротив, передача имени файла script в требуемую оболочку будет запускать script в подоболочке, а не в текущем контексте.