Me preguntaba si existe una convención para las extensiones de tipo de archivo para los scripts de shell que desea obtener en lugar de ejecutar. Por ejemplo:
Si quiero ejecutar este script en una subshell.
./script.sh
Si quiero recordar ejecutar este script desde el shell actual.
. script.source
¿Existe una convención (como POSIX por ejemplo) para un tipo de archivo en el segundo ejemplo? Algo como .source
o .sourceme
?
Actualizar
Esta pregunta no pregunta sobre ninguna opinión. Dije claramente que me gustaría saber si hay una extensión de archivo estandarizada para este tipo de scripts. Esta pregunta está aún menos basada en la opinión que esta pregunta bien recibida sobre un tema similar (¿ Usar extensión .sh o .bash para scripts de bash? ).
shell-script
shell
standard
conventions
Mateusz Piotrowski
fuente
fuente
#!/bin/sh
o similares deben tener ninguna extensión, porque el usuario no debería tener que preocuparse por lo que el lenguaje del guión subyacente fue escrito en.$PATH
, se llega a utilizar todo el tiempo, por lo que su gusto,ps
,ls
,curl
y todos los otros comandos, entonces empiezan a funciones de completado de concha construir a su alrededor, encuentro Está bien dejar caer la extensión. Pero sí, cuando obtiene un script de shell, que no son ejecutables por sí mismos, no lo haríachmod +x
, y los nombraríascript.sh
. También a menudo asigno una extensión simplemente porque si no lo hago, no obtendré resaltado de sintaxis en mi editor.Respuestas:
Yo usaría
.sh
(para archivos en elsh
lenguaje POSIX ,.bash
parabash
archivos no compatibles con sh , es decir, la extensión identifica el idioma en el que está escrito el script) para archivos destinados a ser originados (o más generalmente no destinados a ser ejecutados), y sin extensión para archivos que deben ejecutarse.También puede agregar un:
she-bang, de modo que cuando se ejecuta por error (aunque esperaría que a esos archivos no se les otorguen permisos de ejecución, lo que ya impediría la ejecución), recibe un aviso de que debe obtenerse en su lugar.
fuente
En el caso de los archivos fuente, creo que la mejor manera es .conf para archivos que configuran su script y .shlib o .shlibs para archivos que tienen funciones u otras utilidades.
Si desea evitar que su script se ejecute con el shell incorrecto, y hashbang no es suficiente para usted, puede usar esto:
fuente
/proc/$$/exe
, que también podría hacerlo comocase $(readlink "/proc/$$/exe") in */bash)...
, aunque en este caso, yo simplemente uso:if [ -z "$BASH_VERSION" ]
. (echo
debería serecho >&2
). (Me agradas.conf
o.shlibs
(pero para archivos sh) extensiones, aunque puede que no ayude a resaltadores de sintaxis que dependen de la extensión).