Quando você "apenas executa" o arquivo, o interpretador fornecido no shebang (a primeira linha do script, começando com #!
, por exemplo, #!/usr/bin/csh
) é executado com devenv
(ou devenv.csh
, isso é um pouco inconsistente na questão) como parâmetro. Em seguida, ele executará os comandos no arquivo e terminará.
Sourceing o arquivo significa que os comandos são executados no shell atual. Quando alguns dos comandos em devenv.csh
alteram o ambiente (e o nome do arquivo sugere que esse é o objetivo principal deste arquivo específico), executá-lo não terá efeito: o ambiente será alterado no subshell, mas isso terminará imediatamente, não deixando rastros das configurações alteradas. Observe que as variáveis de ambiente nunca se propagam "para cima": elas só podem ser herdadas por subprocessos, mas não pelos pais.