Quando si genera uno script di shell, la riga shebang viene ignorata. Inserendo uno shebang non valido, è possibile avvisare l'utente che lo script è stato eseguito erroneamente:
#!/bin/bash source-this-script
# ...
Il messaggio di errore sarà questo:
/bin/bash: source-this-script: No such file or directory
Il nome dell'argomento (arbitrario) fornisce già un forte suggerimento, ma il messaggio di errore non è ancora chiaro al 100%. Possiamo risolvere questo problema con uno script di utilità source-this-script
posizionato da qualche parte nel tuo PATH
:
#!/bin/sh
echo >&2 "This script must be sourced, not executed${1:+: }${1:-!}"
exit 1
Ora, il messaggio di errore sarà questo:
This script must be sourced, not executed: path/to/script.sh
Confronto con altri approcci
Rispetto alle altre risposte, questo approccio richiede solo modifiche minime a ciascuno script (e avere una riga shebang aiuta con il rilevamento del tipo di file negli editor e specifica il dialetto dello script shell, quindi ci sono anche vantaggi). Il rovescio della medaglia è un messaggio di errore in qualche modo poco chiaro, o l'aggiunta (una tantum) di un altro script di shell.
bash path/to/script.sh
Tuttavia, non impedisce l'invocazione esplicita tramite (grazie @muru!).
x
, che contiene solo il comando. your-script-to-be-sourced
, va bene, ma se vuole eseguirlobash your-script-to-be-sourced
dovrebbe essere proibito? Qual è il punto di questa restrizione?