Est-ce que quelqu'un sait pourquoi le script suivant fonctionne? Le shell exécute la commande echo et émet la sortie HI. Je pensais que puisqu'il n'y a pas de "!" après le "#", le shell donnerait une erreur.Linux shell situation étrange
Répondre
S'il n'y a pas de #! en spécifiant un interpréteur spécifique, le noyau ne l'interceptera pas et ne le lancera pas avec le programme spécifié. Cependant, le shell actuel peut toujours l'interpréter comme un fichier de commande, ce que vous voyez se produire.
Lorsque le shell est invité à exécuter un fichier avec le bit exécutable activé, il examine le fichier et détermine s'il commence par un # shebang! Si c'est le cas, il exécutera cette commande qui récupérera le texte du programme à partir du reste du fichier.
Si le fichier ne démarre pas avec un shebang, le shell tentera de l'exécuter lui-même. C'est ce qui se passe pour vous et le shell interprète la première ligne comme un commentaire.
En fait, le chargeur le fait, pas le shell. Voir http://www.in-ulm.de/~mascheck/various/shebang/sys1.c.html pour l'annonce de Dennis Ritchie de cette fonctionnalité quand il a été ajouté à Unix. Cela donne une merveilleuse explication de pourquoi il est préférable que le chargeur le fasse plutôt que le shell. –
@Dan. Merci c'était intéressant. –
- 1. Linux: shell builtin string correspondant
- 2. Taille de fichier shell Linux
- 3. date de shell linux question
- 4. Linux shell équivalent sur IIS
- 5. sortie shell linux à html
- 6. Situation étrange avec la vidéo html5 dans le projet rails3
- 7. étrange Construire Message de noyau Linux
- 8. Linux clock_gettime (CLOCK_MONOTONIC) étrange comportement non-monotone
- 9. Problème étrange avec PHP mail() sous Linux
- 10. Livre sur la programmation de shell Linux
- 11. Aide sur l'implémentation simple de shell Linux
- 12. ligne d'entrée de script shell linux
- 13. Colonnes de somme de shell Linux
- 14. __LINE__ équivalent pour le shell Linux
- 15. situation intéressante dans C++
- 16. situation très étrange quand je fais la page ASPX dans un dossier un document par défaut
- 17. étrange erreur dans les fichiers exécutables en cours d'exécution (linux)
- 18. Exception d'hibernation étrange lors de l'exécution sous Linux
- 19. Comportement étrange de printk dans le module noyau Linux
- 20. os.system() exécute la commande sous quel shell linux?
- 21. Parse JSON avec les scripts shell à linux
- 22. Comment résoudre un système linéaire dans un shell Linux?
- 23. Dois-je créer Linux Shell Script ou un programme Java?
- 24. sommation cellulaire des tables dans sage un script shell linux
- 25. javascript (spidermonkey) comment exécuter une commande linux depuis js shell?
- 26. Tuer le socket linux du shell (gentoo amd64)
- 27. shell Linux: Comment lire l'argument de la commande d'un fichier?
- 28. shell Linux: comment appeler les programmes après un certain temps
- 29. Shell Linux passant des valeurs variables au programme principal
- 30. Comment lancer un shell linux à partir de/etc/inittab
Ceci est correct. La raison pour laquelle le script fonctionne toujours est que "#" est le caractère de commentaire dans Bash/SH/ZSH/etc, donc la première ligne est ignorée comme un commentaire. – Borealid
Merci pour la réponse complète! – yassin