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