¿Es una buena idea poner variables de entorno en /usr/local/bin?

¿Es una buena idea poner variables de entorno en /usr/local/bin?

Estoy usando aws cfn para iniciar instancias de ubuntu y necesito pasar las variables proporcionadas en el script de inicio de cfn a los scripts de la instancia. Por ejemplo, puedo pasar "db-server=db-2.domain.com" y hay varios scripts en la instancia que quieren saber esta dirección.

En este momento creo un archivo en /etc/profile.d configurando vars con export, pero esto solo funciona si bash se inicia como un shell de inicio de sesión, lo que requiere acciones adicionales de mi parte para tener estas variables en todas partes.

Entonces pensé que tal vez podría crear archivos en /usr/local/bin, por ejemplo, get-db-host.shcon echo "db-2.domain.com"contenido, de esta manera estarían disponibles para cada script sin necesidad de cambios.

¿Es un buen enfoque?

Respuesta1

¿Es un buen enfoque?

Estoy bastante seguro de que todos los scripts de los que estás hablando son scripts de shell. En este caso, podrías simplemente poner todas tus variables en un archivo de configuración:

db-server=db-2.domain.com

Colóquelo en una ubicación estándar (por ejemplo, /usr/local/etc/myapp/) y consígalo en los otros scripts:

. /usr/local/etc/myapp

También puedes usar simplemente simple /etc, obviamente.

Respuesta2

El método recomendado es simplemente agregar las variables a /etc/environment. Este archivo se lee al iniciar sesión (desde elDocumentos de Ubuntu):

Las configuraciones de las variables de entorno que afectan al sistema en su totalidad (en lugar de solo a un usuario en particular) no deben colocarse en ninguno de los muchos scripts a nivel del sistema que se ejecutan cuando se carga el sistema o la sesión de escritorio, sino en

/etc/environment: este archivo está diseñado específicamente para la configuración de variables de entorno en todo el sistema. No es un archivo de script, sino que consta de expresiones de asignación, una por línea. Específicamente, este archivo almacena la configuración regional y de ruta de todo el sistema.

Entonces, simplemente edite /etc/environment/y agregue

db-server=db-2.domain.com

Respuesta3

Yo diría que no a esa idea. Ese directorio /usr/local/binestá destinado a ejecutables que son locales del cuadro y que no forman parte de ningún paquete en particular (normalmente).

En lugar de convertirlo en una configuración misteriosa, coloque las variables donde sean claramente obvias para otra persona que pueda necesitar realizar su tarea.

Los pondría en un archivo en su $HOMEdirectorio y simplemente obtendría ese archivo de su archivo $HOME/.bashrc.

Ejemplo

if [ -f $HOME/.my_aws_env ]; then
    . $HOME/.my_aws_env
fi

O puedes ser genial y moderno y hacerlo en una sola línea:

[ -f $HOME/.my_aws_env ] && . $HOME/.my_aws_env

información relacionada