Navigazione riga di comando · 5 min read · Jan 21, 2026

Suggerimenti/trucchi per la navigazione nella riga di comando Linux 3 - la variabile d'ambiente CDPATH

Nella prima parte di questa serie, abbiamo discusso in dettaglio il comando cd -, e nella seconda parte, abbiamo esaminato a fondo i comandi pushd e popd così come gli scenari in cui risultano utili.

Continuando con la nostra discussione sugli aspetti della navigazione nella riga di comando, in questo tutorial, discuteremo della variabile d’ambiente CDPATH attraverso esempi facili da comprendere. Discuteremo anche alcuni dettagli avanzati relativi a questa variabile.

** La variabile d’ambiente CDPATH

* Anche se il tuo lavoro nella riga di comando comporta l’esecuzione di tutte le operazioni sotto una particolare directory - diciamo la tua home directory - anche in questo caso devi fornire percorsi assoluti mentre cambi directory. Ad esempio, considera una situazione in cui mi trovo nella directory /home/himanshu/Downloads*:

$ pwd  
/home/himanshu/Downloads

E la richiesta è di passare alla directory /home/himanshu/Desktop. Per fare questo, di solito, dovrò eseguire:

cd /home/himanshu/Desktop/

oppure

cd ~/Desktop/

oppure

cd ../Desktop/

Non sarebbe facile se potessi semplicemente eseguire il seguente comando:

cd Desktop

Sì, è possibile. Ed è qui che entra in gioco la variabile d’ambiente CDPATH. Puoi usare questa variabile per definire la directory base per il comando cd.

Se provi a stampare il suo valore, vedrai che questa variabile d’ambiente è vuota per impostazione predefinita:

$ echo $CDPATH  
$

Ora, considerando il caso di cui abbiamo discusso finora, utilizziamo questa variabile d’ambiente per definire /home/himanshu come directory base per il comando cd.

Il modo più semplice per farlo è:

export CDPATH=/home/himanshu

E ora, posso fare ciò che non ero in grado di fare prima - da dentro la directory /home/himanshu/Downloads, eseguire con successo il comando cd Desktop.

$ pwd  
/home/himanshu/Downloads  
$ cd Desktop/  
/home/himanshu/Desktop  
$

Questo significa che ora posso fare un cd in qualsiasi directory sotto /home/himanshu senza specificare esplicitamente /home/himanshu o ~ o ../ (o più ../) nel comando cd.

Punti da tenere a mente

* Quindi ora sai come abbiamo usato la variabile d’ambiente CDPATH per passare facilmente da /home/himanshu/Downloads a /home/himanshu/Desktop. Ora, considera una situazione in cui la directory /home/himanshu/Desktop contiene una sottodirectory chiamata Downloads*, ed è quest’ultima in cui intendi passare.

Ma all’improvviso ti rendi conto che eseguire un cd Desktop ti porterà a /home/himanshu/Desktop. Quindi, per assicurarti che ciò non accada, fai:

cd ./Downloads

Sebbene non ci sia problema nel comando sopra menzionato di per sé, è uno sforzo extra da parte tua (per quanto possa essere piccolo), specialmente considerando che dovrai farlo ogni volta che si presenta una situazione del genere. Una soluzione più elegante a questo problema può essere quella di impostare originariamente la variabile CDPATH nel seguente modo:

export CDPATH=".:/home/himanshu"

Questo significa che stai dicendo al comando cd di cercare prima la directory nella directory di lavoro attuale e poi provare a cercare nella directory /home/himanshu. Naturalmente, se vuoi o meno che il comando cd si comporti in questo modo dipende interamente dalle tue preferenze o esigenze - la mia idea dietro la discussione di questo punto era farti sapere che potrebbe sorgere questo tipo di situazione.

Come avrai capito fino ad ora, una volta impostata la variabile d’ambiente CDPATH, il suo valore - o l’insieme di percorsi che contiene - sono gli unici luoghi nel sistema dove il comando cd cerca directory (eccetto ovviamente gli scenari in cui usi percorsi assoluti). Quindi, spetta interamente a te assicurarti che il comportamento del comando rimanga coerente.

Procedendo, se c’è uno script bash che utilizza il comando cd con percorsi relativi, è meglio cancellare o disattivare prima la variabile d’ambiente CDPATH, a meno che tu non sia d’accordo a rimanere intrappolato in problemi imprevisti. In alternativa, piuttosto che utilizzare il comando export nel terminale per impostare CDPATH, puoi impostare la variabile d’ambiente nel tuo file .bashrc dopo aver testato per shell interattive/non interattive per assicurarti che la modifica che stai cercando di fare sia riflessa solo nelle shell interattive.

L’ordine in cui i percorsi appaiono nel valore della variabile d’ambiente è anche importante. Ad esempio, se la directory corrente è elencata prima di /home/himanshu, allora il comando cd cercherà prima una directory nella directory di lavoro attuale e poi passerà a /home/himanshu. Tuttavia, se il valore è “/home/himanshu:.” allora la prima ricerca sarà effettuata in /home/himanshu e dopo nella directory corrente. Inutile dire che questo influenzerà ciò che fa il comando cd e potrebbe causare problemi se non sei a conoscenza dell’ordine dei percorsi.

Tieni sempre a mente che la variabile d’ambiente CDPATH, come suggerisce il nome, funziona solo per il comando cd. Questo significa che mentre sei dentro la directory /home/himanshu/Downloads, puoi eseguire il comando cd Desktop per passare alla directory /home/himanshu/Desktop, ma non puoi eseguire un ls. Ecco un esempio:

$ pwd  
/home/himanshu/Downloads  
$ ls Desktop  
ls: impossibile accedere a Desktop: Nessun file o directory di questo tipo  
$

Tuttavia, potrebbero esserci alcune semplici soluzioni alternative. Ad esempio, possiamo ottenere ciò che vogliamo con uno sforzo minimo nel seguente modo:

$ cd Desktop/;ls  
/home/himanshu/Desktop  
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~

Ma sì, potrebbe non esserci una soluzione alternativa per ogni situazione.

Un altro punto importante: come avrai osservato, ogni volta che usi il comando cd con la variabile d’ambiente CDPATH impostata, il comando produce il percorso completo della directory a cui stai passando nell’output. Inutile dire che non tutti vorrebbero avere queste informazioni ogni volta che eseguono il comando cd sulla propria macchina.

Per assicurarti che questo output venga soppresso, puoi usare il seguente comando:

alias cd='>/dev/null cd'

Il comando sopra menzionato silenzierà l’output ogni volta che il comando cd ha successo, ma permetterà che i messaggi di errore vengano prodotti ogni volta che il comando fallisce.

Infine, nel caso tu affronti un problema in cui, dopo aver impostato la variabile d’ambiente CDPATH, non puoi utilizzare la funzione di completamento della tabulazione della shell, allora puoi provare a installare e abilitare bash-completion - maggiori informazioni qui.

Conclusione

La variabile d’ambiente CDPATH è una spada a doppio taglio - se non usata con cautela e completa conoscenza, potrebbe portarti in trappole complesse che potrebbero richiedere molto del tuo tempo prezioso per essere risolte. Naturalmente, ciò non significa che non dovresti mai provarla; valuta semplicemente tutte le opzioni disponibili e se concludi che utilizzare CDPATH sarebbe di grande aiuto, allora procedi e usala.

Hai usato CDPATH come un professionista? Hai altri suggerimenti da condividere? Per favore, condividi i tuoi pensieri nei commenti qui sotto.

**

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.