En desacuerdo con las otras respuestas, existe una convención común para usar una .sh
extensión para scripts de shell, pero no es una convención útil. Es mejor no utilizar ninguna extensión. La ventaja de poder decir que foo.sh
es un script de shell debido a su nombre es mínima y se paga con una pérdida de flexibilidad.
Para hacer que un script bash sea ejecutable, debe tener una línea shebang en la parte superior:
#!/bin/bash
y use el chmod +x
comando para que el sistema lo reconozca como un archivo ejecutable. Luego, debe instalarse en uno de los directorios enumerados en su $PATH
. Si se llama al script foo
, puede ejecutarlo desde un indicador de shell escribiendo foo
. O si está en el directorio actual (común para los scripts temporales), puede escribir ./foo
.
Ni el shell ni el sistema operativo prestan atención a la parte de extensión del nombre del archivo. Es solo parte del nombre. Y al no darle una extensión especial, se asegura de que cualquier persona (ya sea un usuario u otro script) que lo use no tenga que preocuparse por cómo se implementó, ya sea un script de shell (sh, bash, csh o lo que sea) , un script Perl, Python o Awk, o un ejecutable binario. El sistema está diseñado específicamente para que se pueda invocar un script interpretado o un ejecutable binario sin saber ni importar cómo se implementa.
Los sistemas similares a UNIX comenzaron con una interfaz de línea de comandos puramente textual. Posteriormente se agregaron GUI como KDE y Gnome. En un sistema de escritorio con GUI, normalmente puede ejecutar un programa (de nuevo, ya sea un script o un ejecutable binario), por ejemplo, haciendo doble clic en un icono que se refiere a él. Normalmente, esto descarta cualquier salida que el programa pueda imprimir y no le permite pasar argumentos de línea de comandos; es mucho menos flexible que ejecutarlo desde un indicador de shell. Pero para algunos programas (principalmente clientes GUI) puede ser más conveniente.
Las secuencias de comandos de shell se aprenden mejor desde la línea de comandos, no desde una GUI.
(Algunas herramientas hacen prestar atención a las extensiones de archivo Por ejemplo, los compiladores suelen utilizar la extensión para determinar el idioma que el código está escrito en:. .c
Para C, .cpp
. Para C ++, etc. Esta convención no se aplica a los archivos ejecutables)
Tenga en cuenta que UNIX (y los sistemas similares a UNIX) no son Windows. MS Windows generalmente usa la extensión de un archivo para determinar cómo abrirlo / ejecutarlo. Los ejecutables binarios deben tener una .exe
extensión. Si tiene un shell similar a UNIX instalado en Windows, puede configurar Windows para que reconozca una .sh
extensión como un script de shell y usar el shell para abrirlo; Windows no tiene la #!
convención.
bash myscript