Este é um problema de escopo variável e não tem absolutamente nada a ver com a execução manual de um script a partir da linha de comando ou a execução de outro script.
As variáveis do shell que não são exportadas para o ambiente não são visíveis para processos filhos (incluindo shells filho)
Se você estiver obtendo script2
dentro de script3
, então script3
verá todas as variáveis definidas em script2
, porque tudo acontece dentro do escopo de script3
. É praticamente o mesmo se você contratar script2
e script3
dentro de script1
(mas, nesse caso, tudo acontece dentro do escopo de script1
)
Se, no entanto, você estiver pesquisando script2
dentro de script1
e, em seguida, executando ( não sourcing) script3
de script1
, então script3
verá apenas variáveis definidas ou alterado em script2
se eles forem exportados.
Realmente não importa quando ou onde as variáveis são exportadas, desde que aconteça antes de script3
ser executado. As variáveis podem ser exportadas em script1
ou em script2
, ou até mesmo no shell pai (ou em seu .profile / .bashrc / etc) que executou script1
para começar.