Você pode usar a variável de ambiente $_
para ver
se o seu script está sendo "executado" pelo comando source
:
#!/bin/fish
if test "$_" = source
echo got sourced
else
echo was execed
end
Eu tenho um script de peixe que exporta algumas variáveis e lança um comando no final. Eu gostaria de poder criar esse arquivo para trazer essas variáveis para a sessão de shell atual, mas sem executar o comando no final.
Então, a pergunta: posso descobrir se o arquivo atual está sendo executado ou originado no arquivo?
Acho que você entendeu mal o que "fonte" de um script faz. Geralmente, a execução de um script será executada em um processo separado. O sourcing irá executá-lo no shell atual . Ele ainda executará cada linha.
Provavelmente, o que você quer fazer é filtrar a última linha. Experimente:
source (sed '$d' filename | psub)
O comando psub
é usado para manipular a saída de algum processo como se fosse um arquivo. Documentação
Tags fish