Em um script de shell, $0
é o nome do script atualmente em execução. Você pode usar isso para saber se está sendo originado ou executado assim:
if [[ "$(basename -- "$0")" == "script.sh" ]]; then
echo "Don't run $0, source it" >&2
exit 1
fi