Ad esempio, ecco un file relativo a Java:
#!/bin/bash
if test -z "${JAVAHOME}"
then
JAVAHOME=/sviluppo/java/
JAVA_HOME=${JAVAHOME}/jdk
JDK_HOME="${JAVAHOME}/jdk"
JRE_HOME="${JDK_HOME}"
JAR_HOME="${JAVAHOME}/jars"
ANT_HOME="${JAVAHOME}/ant"
ECLIPSE_HOME="{JAVAHOME}/eclipse"
PATH="${JDK_HOME}/bin":"${PATH}":"${ANT_HOME}/bin"
# tengo conto di tutti i jar file messi nella jar home
for jarFile in "${JAR_HOME}"/*.jar
do
JAR_CLASSPATH="${jarFile}":"${JAR_CLASSPATH}"
done
CLASSPATH="${JAR_CLASSPATH}":"${CLASSPATH}"
classpath="${CLASSPATH}"
export JAVA_HOME
export JDK_HOME
export JRE_HOME
export JAR_HOME
export PATH
export CLASSPATH
export classpath
fi
Il file è piuttosto semplice: anzitutto si controlla se la definizione delle variabili è già stata fatta, nel qual caso non la si sovrascrive. Ciò viene controllato grazie alla variabile ${JAVAHOME}, dalla quale molte delle altre dipendono. In seguito, si definiscono i valori per le variabili di ambiente richieste (non tutte le variabili sono effettivamente richieste dal sistema, alcune sono definite per praticità o coerenza). Si noti la definizione di ${JAR_HOME}, che rappresenta una cartella che contiene i jar relativi a librerie esterne; tutti i jar sono aggiunti al classpath in modo da rendere le librerie accessibili. Infine si effettua l'esportazione delle variabili per renderle visibili anche ai sottoshell.
Per effettuare il caricamento automatico di questo file (e degli altri simili), occorre poi modificare il proprio .profile o .bash_profile aggiungendo il blocco che segue:
if [ -d $HOME/bin ]
then
for envFile in $HOME/bin/*.env
do
. $envFile
done
fi
Il blocco di codice qui sopra è piuttosto semplice: supponendo che i file .env si trovino nella cartella bin della home utente, si provvede al loro caricamento mediante l'operatore . (source).
Tramite questa soluzione è abbastanza semplice mantenere anche grosse quantità di variabili di ambiente senza perdere in modularità e semplicità di configurazione. Basterà dare un'occhiata al file .env relativo ad un sottosistema per ottenere la relativa configurazione.
Nessun commento:
Posta un commento