2010-05-23 13 views
10

Estoy escribiendo un pequeño script de instalación para algún software. Todo lo que hace es desempaquetar un tar objetivo, y luego quiero establecer permanentemente algunas variables de entorno, principalmente la ubicación de las libs desempaquetadas y actualizando $ PATH. ¿Necesito editar programáticamente el archivo .bashrc, agregando las entradas apropiadas al final, por ejemplo, o hay otra manera? ¿Cuál es la práctica estándar?¿Cómo establecer programáticamente una variable de entorno permanente en Linux?

Editar: El paquete incluye una serie de secuencias de comandos de ejecución (20+) que todo el uso de estas variables de entorno con nombre, por lo que tiene necesidad de hacerlo de alguna manera (los nombres de las variables se han elegido de tal manera que una colisión es extremadamente improbable)

Respuesta

16

LSB-obediente (véase spec) la práctica es crear un script de shell en la carpeta /etc/profile.d/.

Nómbrelo después de su aplicación (y asegúrese de que el nombre sea único), asegúrese de que el nombre termine con .sh (también puede desear agregar scripts para otros shells) y export las variables que necesita en el script . Todos los scripts *.sh de ese directorio se leen en el inicio de sesión del usuario; al mismo tiempo /etc/profile es source d.

Tenga en cuenta que esto no se aplica por bash; más bien, es una especie de acuerdo.

+0

bien, parece que podría ser la solución. presumiblemente el instalador deberá ejecutarse como root para poder escribir un script ejecutable aquí. –

+0

¿Este script también es leído por los servicios? Por ejemplo, apache o tomcat? – Tobia

3

La práctica estándar es instalar en directorios que ya están en la ruta y en el directorio de la biblioteca estándar, por lo que no es necesario actualizar estas variables.

Actualizando .bashrc es propenso a fallas, entre otras cosas; ¿Qué pasa si un usuario usa un archivo o shell diferente?

+1

+1 correcto. Los usuarios estarían muy descontentos si intentas editar sus archivos .bashrc. Si desea instalar en un directorio no estándar, o no cree que su usuario tenga permiso para hacerlo, déjelos especificar '--install-dir = mydir' y dígales qué necesitarían agregar a su entorno . Hay un buen ejemplo en http://golang.org/doc/install.html – msw

+0

sí, pensé que editar .bashrc sería dudoso por una serie de razones. El problema es que el software contiene una serie de scripts (más de 20) que usan estas variables de entorno con nombre, así que tengo que configurarlos de alguna manera. –

+2

Una forma es proporcionarlos en una secuencia de comandos envoltorio que llama a sus secuencias de comandos. – WhirlWind

2

También puede generar e instalar un script que establezca esas variables. Los usuarios de su paquete a continuación, fuente de esa secuencia de comandos o copiar su contenido a su propio archivo de inicio shell.

+4

O un script de contenedor llama al script de configuración de var en un nombre y lugar conocidos y luego llama al ejecutable inicial. –

Cuestiones relacionadas