O que é uma boa maneira POSIX para fazer um script executável (uma função do script é executada) e in-sourcable com o comando .
(nada acontece, exceto (pelo menos) 1 função se torna disponível?
Eu tentei:
src.sh:
#!/bin/sh -eu
FILENAME=src.sh
f() { echo hello from f; }
case $0 in ($FILENAME|*/$FILENAME) f "$@";; esac
e testamos com:
( PATH=$PWD:$PATH; src.sh; . src.sh ; echo ===; f )
Isso parece funcionar como esperado no Cygwin, no MacOS e no Linux.
Alguma sugestão sobre como melhorá-lo?
Tags shell