2010-05-23 15 views
10

Sto scrivendo un piccolo script di installazione per alcuni software. Tutto ciò che fa è decomprimere un target tar, e poi voglio impostare in modo permanente alcune variabili di ambiente, principalmente la posizione delle librerie decompresse e l'aggiornamento di $ PATH. Devo modificare a livello di programmazione il file .bashrc, ad esempio aggiungendo le voci appropriate alla fine, oppure esiste un altro modo? Qual è la pratica standard?Come impostare in modo programmatico una variabile di ambiente permanente in Linux?

Edit: Il pacchetto include una serie di script Run (20+) che tutti usano queste variabili di ambiente con nome, quindi ho bisogno di impostare in qualche modo (i nomi delle variabili sono stati scelti in modo tale che una collisione è estremamente improbabile)

risposta

16

Conforme a LSB (vedere spec) è pratica di creare uno script di shell nella cartella /etc/profile.d/.

Nome dopo l'applicazione (e assicurarsi che il nome sia univoco), assicurarsi che il nome termini con .sh (si potrebbe voler aggiungere script anche per altre shell) e export le variabili necessarie nello script . Tutti gli script *.sh da quella directory vengono letti all'accesso utente - la stessa ora /etc/profile è source d.

Si noti che questo non è applicato da bash; piuttosto, è un accordo di sorta.

+0

ok sembra che potrebbe essere la soluzione. presumibilmente l'installer dovrà essere eseguito come root per scrivere qui uno script eseguibile. –

+0

Questo script è letto anche dai servizi? Ad esempio apache o tomcat? – Tobia

3

Lo standard è quello di installare nelle directory già nel percorso e nella directory della libreria standard, quindi non è necessario aggiornare queste variabili.

Aggiornamento .bashrc è un po 'incline al fallimento, tra le altre cose; cosa succede se un utente usa un file o una shell diversa?

+1

+1 corretto. Gli utenti sarebbero molto infelici se si provasse a modificare i loro .bashrc per loro. Se vuoi installare in una directory non standard - o non pensi che il tuo utente abbia il permesso - lascia che specifichino '--install-dir = mydir' e dica loro cosa avrebbero bisogno di aggiungere al loro ambiente . C'è un buon esempio su http://golang.org/doc/install.html – msw

+0

sì, ho pensato che la modifica di .bashrc sarebbe discutibile per una serie di ragioni. Il problema è che il software contiene un numero di script (20+) che usano tutti queste variabili di ambiente nominate - quindi ho bisogno di impostarli in qualche modo. –

+2

Un modo è quello di trovarli in uno script wrapper che chiama i tuoi script. – WhirlWind

2

È inoltre possibile generare e installare uno script che imposta tali variabili. Gli utenti del tuo pacchetto quindi generano tale script o ne copiano il contenuto nel proprio file di inizializzazione della shell.

+4

Oppure uno script wrapper richiama lo script var-setting con un nome noto e inserisce, quindi chiama l'eseguibile iniziale. –

Problemi correlati