← Tutti gli articoliLinux e strumenti

Linux e strumenti

Variabili di ambiente

Matteo Galacci ·

Una variabile della shell non è automaticamente una variabile d’ambiente. Con export viene passata ai processi figli:

APP_MODE=sviluppo
export APP_MODE
printenv APP_MODE

Per assegnarla soltanto a un comando, in una shell POSIX:

APP_MODE=sviluppo comando

Sostituisci comando con il programma da eseguire. Per eliminarla dalla shell corrente usa unset APP_MODE. Il cambiamento non modifica l’ambiente della shell padre né quello di processi già avviati.

env e printenv senza argomenti possono mostrare token, password e altri dati riservati. Per la diagnosi interroga solo i nomi necessari e non incollare un elenco completo nei log o in una segnalazione pubblica.

Verifica la differenza

APP_MODE=sviluppo
bash -c 'printf "valore figlio: %s\n" "${APP_MODE-non esportata}"'
export APP_MODE
bash -c 'printf "valore figlio: %s\n" "$APP_MODE"'

Parti da una nuova shell in cui APP_MODE non sia già esportata. Il primo figlio mostra “non esportata”, il secondo “sviluppo”. Dopo la prova esegui unset APP_MODE.

Fonti e approfondimenti