¿Cuál es la diferencia entre las extensiones de archivo .command, .tool y .sh?

22

¿Vi un par de preguntas sobre la ejecución de scripts de línea de comandos? Vi que se mencionaron las extensiones .command y .tool. Siempre he usado .sh. ¿Cuál es la diferencia entre estos diferentes guiones? ¿Algunas extensiones permiten diferentes comandos?

daviesgeek
fuente

Respuestas:

15
  • .command - (Script de shell de Terminal) Asocia específicamente un script de shell con Terminal. A veces se lo denomina "archivo de terminal".
  • .tool - (Script de shell de terminal) Igual que la extensión de archivo ".command".
  • .sh - (Shell Script) Un script de shell básico asociado con Xcode 4.1.

Programáticamente, estoy seguro de que la diferencia entre los dos primeros (.command vs. .tool) son sutiles, mientras que el tercero es esencialmente un script de shell predeterminado simple. Y de hecho se asocia con Xcode 4.1.

ingrese la descripción de la imagen aquí


fuente
55
"... Estoy seguro de que la diferencia entre los dos primeros (.command vs. .tool) son sutiles ..." De hecho, las diferencias son inexistentes :-) Terminal los trata de manera idéntica. Las dos extensiones de nombre de archivo se asignan exactamente al mismo tipo de archivo en Info.plist de Terminal y Terminal no intenta detectar qué extensión se suministró. Además, aparte del hecho de que tener diferentes extensiones significa que pueden tener diferentes aplicaciones predeterminadas, el contenido de estos tres tipos de archivos es el mismo. Todos son solo scripts de shell.
Chris Page
2

Creo que los archivos .sh son "propiedad" de Xcode de manera predeterminada, por lo que si hiciera doble clic en uno de ellos, se abriría en Xcode en lugar de ejecutarse.

Los archivos .command y .tool son propiedad de Terminal de forma predeterminada, por lo que si hace doble clic en uno de ellos, se abrirá y ejecutará en Terminal.

No tengo conocimiento de ninguna otra diferencia entre ellos.

Yo también he usado .sh para los scripts de shell, pero recientemente me detuve porque comencé a escribir mis scripts de shell en Zsh en lugar de sh, y fue confuso intentar recordar si un determinado comando terminó en .sh o .zsh, así que finalmente los puse todos en ~ / bin / y me aseguré de que fueran ejecutables, y no use extensiones de archivo en absoluto.

TJ Luoma
fuente
En realidad no se abren en Xcode. Y tengo Xcode instalado en mi máquina.
daviesgeek
1
Los archivos .sh pueden abrirse en Xcode (hacer clic en el control »" abrir con "mostrará Xcode como una opción), pero la aplicación que abran dependerá de la aplicación que se instale por primera vez y" reclame "la extensión. Si se instaló otra aplicación antes de Xcode y reclama .sh, no se mostrará como abierta con Xcode.
TJ Luoma
1
Tiene razón: aparte del hecho de que las diferentes extensiones de nombre de archivo les permiten tener diferentes aplicaciones predeterminadas, el contenido y el manejo de estos archivos es el mismo. Todos son solo archivos de script de shell.
Chris Page