Estoy escribiendo un script de shell con algunas variables que el usuario debe configurar. 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 en sí y úselos
sed
para reemplazarlos durante la instalación (algo como esto: /programming/415677/how-to-replace-placeholders-in-a-text-file )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 colocarlo~/.scriptname
? El script principal se copia a/usr/local/bin
)Pros: es fácil volver a configurar el guión. Incluso podría agregar un parámetro para hacerlo desde el script principal (probablemente también funcionaría en la primera solución, pero editar un script desde sí mismo no parece una muy buena idea)
Contras: el script ahora depende de dos archivos y el usuario debe ejecutar el instalador para que se cree el archivo de configuración. Esto se puede resolver generando automáticamente un archivo de configuración si no existe ninguno. Pero localizar un archivo de configuración externo seguirá siendo más engorroso para los usuarios que solo desean descargar el script, editarlo y terminar con él.
Además, algunas opciones sobre cómo el usuario debe administrar la configuración después de la instalación:
Git como
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / web
Configuración interactiva de $ myscript
Ingrese el nombre de host del servidor: example.org
Ingrese 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 / web
Configuración simple de $ myscript example.org / home / johndoe / proxy / home / johndoe / web
¿Hay alguna otra forma de hacer esto que considerarías?
¿Alguna mejor práctica, algo elegante?