Estoy escribiendo un script de shell con algunas variables que deben ser configuradas por el usuario. Habrá un instalador para descargar y configurar el script, posiblemente haciendo una serie de preguntas. El script en cuestión está dirigido a otros desarrolladores.
Esto se puede implementar de varias maneras:
-
Use marcadores de posición en el script y use
sed
para reemplazarlos durante la instalación (algo como esto: enlace )-
Pros: Todas las definiciones de variables están contenidas en el script. Es fácil descargar el script manualmente y configurar las variables para los usuarios que prefieren un editor sobre el instalador.
-
Contras: es difícil reconfigurar las variables a través del instalador una vez que están en su lugar. A menos que cree una expresión regular más compleja que sea propensa a errores.
-
-
Use un archivo de configuración , básicamente otro script de shell con asignaciones, y use
source
para incluirlo. (Y, probablemente, colóquelo en~/.scriptname
? El script principal se copia a/usr/local/bin
)-
Pros: Es fácil reconfigurar el script. Incluso podría agregar un parámetro para hacerlo desde la secuencia de comandos principal (probablemente también funcionaría en la primera solución, pero la edición de una secuencia de comandos no parece una buena idea)
-
Contras: el script ahora depende de dos archivos y el usuario debe ejecutar el instalador para crear el archivo de configuración. Esto se puede resolver generando automáticamente un archivo de configuración si no existe ninguno. Pero la ubicación de un archivo de configuración externa será aún más incómoda para los usuarios que solo desean descargar el script, editarlo y terminar con él.
-
También, algunas opciones sobre cómo la configuración debe ser administrada por el usuario después de la instalación:
Git like
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / webInteractivo
$ myscript config
Ingrese el nombre de host del servidor: example.org
Introduzca la ruta al proxy en el servidor: / home / johndoe / proxy
Ingrese la ruta al directorio http en el servidor: / home / johndoe / webgetopts con opciones largas
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / webSimple
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
¿Hay otras formas de hacer esto que consideraría?
¿Alguna de las mejores prácticas, algo elegante?