См. соответствующую страницу Википедии:
In Unix, an environment variable that is changed in a script or compiled program will only affect that process and possibly child processes. The parent process and any unrelated processes will not be affected.
Источник (*)включает сценарий в текущую обработку. Таким образом, переменные среды, определенные в вашем скрипте var.sh
, видны из скрипта startup.sh
.
OTOH, startup.sh
называется, источник не указан. Поэтому это дочерний процесс, как указано на странице WP. Все переменные, созданные в этом скрипте, будут удалены после завершения скрипта.
(*)source script.sh
или . script.sh
. Как указано другими в комментариях OP, указывать относительный путь к исходному скрипту, как вы сделали с ../dir/var.sh
, — плохая идея, поскольку он зависит от места, из которого вы вызываете startup.sh
.