Quelle est la différence entre les extensions de file .command, .tool et .sh?

J'ai vu quelques questions sur l'exécution des scripts de command line? J'ai vu que les extensions .comand et .tool ont été mentionnées. J'ai toujours utilisé .sh. Quelle est la différence entre ces différents scripts? Certaines extensions permettent-elles des commands différentes?

  • .command – (script shell de terminal) associe spécifiquement un script shell à Terminal. Parfois appelé «file terminal».
  • .tool – (script de shell de terminal) Identique à l'extension de file ".command".
  • .sh – (Shell Script) Un script shell basique associé à Xcode 4.1.

Par programme, je suis sûr que la différence entre les deux premiers (.command vs. .tool) est subtile, tandis que la troisième est essentiellement un script shell simple et par défaut. Et s'associe en fait avec Xcode 4.1.

entrez la description de l'image ici

Je crois que les files .sh sont "détenus" par Xcode par défaut, donc, si vous deviez double-cliquer sur l'un d'entre eux, cela s'ouvrirait dans Xcode au lieu d'être exécuté.

Les files .command et .tool appartiennent à Terminal par défaut, donc, si vous double-click l'un d'eux, il s'ouvre et s'exécute dans Terminal.

Je ne connais aucune autre différence entre eux.

Moi aussi, j'ai utilisé .sh pour les scripts shell, mais j'ai récemment arrêté parce que j'ai commencé à écrire mes scripts shell dans Zsh au lieu de sh, et il était confus d'essayer de se callbacker si une certaine command s'est terminée en .sh ou .zsh, alors je les ai tout simplement mis dans ~ / bin / et je me suis assuré qu'ils étaient exécutables et n'utilisais pas d'extension de file sur eux.