Script iniciado como 'fonte' ou 'executável'?

6

Podemos determinar dentro do próprio script se ele foi iniciado como source (.) ou executable (shebang ou algo parecido)?

    
por Dr Beco 29.06.2015 / 22:26

1 resposta

2

Teste em $0 se você tiver um script:

#!/bin/bash
echo $0

e torná-lo executável ( chmod 755 test.sh ) e faça:

source test.sh

você recebe bash (ou outra coisa, dependendo de como você está logado e qual é o seu shell).

Se você fizer

./test.sh

você obtém ./test.sh , presumindo que o script saiba como é salvo no disco que você deve fazer:

if [ $(basename "$0") == "test.sh" ] 
then
   ..... your code here for non-sourced
else
   ..... your code here for sourced
fi
    
por 29.06.2015 / 22:50