Esta pregunta puede ser marcada por ser subjetiva, pero creo que generalmente se acepta como mejor práctica usar bibliotecas para el código de uso común -en lugar de reinventar la rueda cada vez. source
ing un script que define funciones y variables es la forma de shell para hacer esto, por lo que diría que sí, tener scripts de biblioteca y source
ing ellos es probablemente una buena práctica.
De hecho, voy más allá y tengo un directorio bin
en mi PATH
con herramientas y secuencias de comandos que uso con frecuencia; algunos de esos scripts de biblioteca están allí, así que puedo source
usarlos fácilmente en mi consola interactiva.
En bash
, esa es una buena manera de hacerlo, sí.
Obtener el script de "biblioteca" usando source
o .
sería una solución adecuada a su problema de querer compartir una definición de función entre dos o más scripts. Cada secuencia de comandos que necesitaba acceso a la función (s )definida en la secuencia de comandos de "biblioteca" (s )generaría el archivo necesario (s ), probablemente en la parte superior de la secuencia de comandos.
Esto le permitiría recopilar funciones relacionadas en un solo script de "biblioteca" y obtener acceso a ellas.
No del todo relacionado, pero el shell bash
también tiene la capacidad de generar automáticamente un archivo al ejecutar un shell no -interactivo (, es decir, un script ). Esto puede usarse para configurar un entorno específico para el script:
BASH_ENV="$HOME/stuff/script.env"./myscript
... donde script.env
puede hacer cualquier cosa, desde definir funciones y establecer variables de entorno o shell, hasta obtener otros archivos, etc.
Algunos shells, como ksh93
, tienen una variable de entorno que apunta a un directorio que puede contener scripts de definición de funciones como estos. En ksh93
, esta variable se llama FPATH
. Un script, $FPATH/foo
, contendría una función llamada foo
,que se encontraría automáticamente cuando el usuario escriba foo
en la línea de comando (o en un script ). Que yo sepa, el shell bash
no tiene esta funcionalidad específica.
Otros shells tienen otras formas de funcionalidad de "carga automática -".