awk shebang ne fonctionne pas

J’ai un programme simple awk :

 #!/usr/bin/awk -f BEGIN {print "work already!"} 

Si je le lance comme:

 awk -f panic 

sur le terminal (osx), cela fonctionne. Mais cela échoue si j’essaie de l’exécuter en tant que script:

 . panic -bash: BEGIN: command not found 

J’ai vérifié l’emplacement de awk en utilisant which awk et il se trouve en effet dans /usr/bin/awk . Des idées pourquoi ça ne marche pas?

Pour exécuter un fichier en tant que script, vous devez taper:

 ./ 

Modifier :

Comme l'a souligné William Pursell,. n'est pas un alias pour la source , mais le contraire exact.

. n'est pas un alias pour la source. . est la commande sh standard pour exécuter un autre script dans le shell actuel. source est une commande qui a pour origine csh et qui a été adoptée par de nombreux clones comme un alias pour .. Si source doit être vu comme une abomination, c'est un alias pour., et non l'inverse.

Exécuter comme ./panic , pas . panic . panic , car ce dernier est identique à la source panic cours d’exécution, ce qui ne fera pas ce que vous voulez. Voir l’ man source