`
Cosa fa#
Stampa le variabili d'ambiente del processo corrente — solo quelle esportate con export, visibili ai processi figli. Non mostra variabili shell locali ne' funzioni bash. Per vedere tutto (variabili locali + d'ambiente + funzioni) si usa set.
Sintassi#
printenv [variabile]
Comandi essenziali#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
printenv | — | — | Mostra tutte le variabili d'ambiente |
printenv USER | — | — | Mostra solo il valore di USER |
printenv PATH | — | — | Mostra il PATH completo |
printenv | less | — | — | Naviga l'elenco completo con paginazione |
printenv | grep -i editor | — | — | Cerca una variabile per nome parziale |
printenv vs set — differenza#
printenv mostra solo le variabili d'ambiente — quelle esportate, ereditate dai processi figli. set mostra tutto: variabili d'ambiente + variabili shell locali + funzioni bash definite nella sessione corrente.
# Definisci una variabile locale (senza export)
x=5
printenv x # nessun output — x non e' esportata
set | grep "^x" # mostra: x=5
# Esporta la variabile
export x
printenv x # ora mostra: 5printenv vs echo $VAR — differenza#
Il risultato e' identico ma il meccanismo e' diverso. echo $USER fa espandere la variabile dalla shell prima di stampare — la shell non sa niente di variabili d'ambiente, vede gia' la stringa espansa. printenv USER interroga direttamente l'ambiente del processo.
printenv USER # interroga l'ambiente → barno
echo $USER # la shell espande $USER → barno, poi echo stampa la stringaCombinazioni utili#
# Tutte le variabili d'ambiente in ordine alfabetico
printenv | sort
# Cerca variabili che contengono un percorso specifico
printenv | grep /usr/bin
# Confronta l'ambiente prima e dopo aver modificato un file di startup
printenv > prima.txt
source ~/.bashrc
printenv > dopo.txt
diff prima.txt dopo.txtScenario Reale#
Durante un'analisi forense su un sistema compromesso, un analista confronta le variabili d'ambiente dell'utente sospetto con quelle di un utente normale. Una variabile LD_PRELOAD impostata a un path insolito e' un segnale di library hijacking — una tecnica usata per intercettare chiamate di sistema.
Dove l'ho usato#
- shell-environment — contesto teorico delle variabili d'ambiente
Note personali#
printenv | less e' il punto di partenza quando vuoi capire l'ambiente di una shell sconosciuta — ti da' un quadro completo di PATH, HOME, SHELL, EDITOR e tutte le variabili custom impostate.Collegato a#
- system — categoria
- export — per esportare variabili nell'ambiente
- shell-environment — concetto teorico
- echo — alternativa per leggere singole variabili


