Um script de peixe pode distinguir entre ser originado e executado?

0

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?

    
por mkaito 21.07.2015 / 18:34

2 respostas

1

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
    
por 22.07.2015 / 08:43
1

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

    
por 21.07.2015 / 20:50

Tags