Поскольку процесс, который вы запускаете (оболочка, выполняющая ваш скрипт), может делать все, что захочет, но его действия не влияют на родительский процесс (текущую оболочку).
Несколько странная аналогия: я могу сделать 5 выстрелов текилы, и мое окружение станет размытым, и законы гравитации будут затронуты в соответствии с моим восприятием. Но моему отцу его окружение такое же, он не напивается из-за моих действий.
Если вы хотите, чтобы переменные, созданные / измененные в вашем скрипте, влияли на вашу текущую оболочку, вы должны source
сценарий, как указано в других ответах. Обратите внимание, что это также может изменить результирующий рабочий каталог в вашей оболочке, если скрипт выполнит cd /whatever/path
, что любые другие функции, которые были установлены, но также изменены или удалены, также будут затронуты в вашей оболочке.
Действительно странная и не очень хорошая аналогия была бы, если бы я сделал 5 выстрелов текилой, а потом мой отец убил меня и выпил мою кровь.
Я обеспокоен или как? ; -)