La Variabile PATH per il Data Scientist Confuso Come Gestirla

PATH variable for Confused Data Scientists – How to Manage it

Comprendere cosa è PATH e come aggiungere percorsi ad esso sia in sistemi Windows che Unix-like

Immagine di me con Midjourney

A volte mi sembra che le persone su StackOverflow abbiano delle bussole attaccate al tetto della testa. Sembrano sempre trovare PATH.

Credo che non sia nel tuo PATH. Potresti aver combinato pasticci con il tuo PATH. L’hai aggiunto al tuo PATH? Controlla se l’eseguibile si trova nel tuo PATH.

“Ma cosa cavolo è PATH?” dicevo sempre ogni volta che leggevo queste frasi, rossa in faccia, cercando di risolvere un bug. Ora, sono passati tre anni nel mio percorso di data science e so perfettamente cosa sia. Quasi.

E in questo articolo intendo insegnare come gestire questa variabile d’ambiente confusa sia in sistemi Windows che Unix-like.

Iniziamo!

I comandi hanno anche dei percorsi

Qual è il comando di terminale che usi di più? Senza dubbio, il mio è git poiché faccio frequentemente commit mentre scrivo articoli.

La ragione per cui chiedo è che la maggior parte dei comandi di terminale ha anche i propri percorsi nel sistema operativo. Per trovare quel percorso, devi solo eseguire which nome_comando_valido . Ad esempio, ecco il percorso della mia istanza di git:

$ which git  # In windows, use `where`/usr/bin/git

Potresti riconoscere che il precedente è un percorso assoluto. Ma è un percorso verso cosa, esattamente?

Un file binario eseguibile! (Se sei in Windows, otterrai un percorso al file .exe)

Contiene istruzioni su cosa fare quando vengono eseguiti i comandi git. Tutti i comandi di terminale sono script shell o eseguibili in qualche forma che eseguono determinati compiti.

Ad esempio, puoi provare il comando which su comandi di terminale integrati come clear, cat o touch e otterrai percorsi assoluti (anche per il comando which stesso).

Una volta ottenuto il percorso dell’eseguibile, puoi provare a eseguire un comando con il suo percorso completo in questo modo:

$ /usr/bin/git status -s  # lo stesso di `git status -s`M 2023/6_june/7_path/dump.ipynb

E funziona! Ma ecco cosa è interessante: come può la parola git essere equivalente al percorso assoluto /usr/bin/git? Voglio dire, git è solo una parola.

Come fa il tuo computer a conoscere i percorsi eseguibili completi di così tanti comandi e a eseguirli con una sola parola chiave?

(Questo è il momento Eureka!)

Usando la variabile PATH!

Eccoti – il PATH!

PATH è una variabile che contiene i percorsi assoluti dei file eseguibili che eseguono quasi tutti i comandi di terminale, sia integrati che installati dall’utente.

Quando digiti qualsiasi comando come conda env create, il sistema operativo cerca un eseguibile chiamato conda all’interno della tua variabile PATH. Se non riesce a trovare l’eseguibile, restituisce un errore command not found:

$ unknown_commandunknown_command: command not found

Puoi stampare i percorsi nel tuo PATH con un singolo comando.

Sui sistemi Unix-like:

$ echo $PATH/home/bexgboost/.local/bin:/home/bexgboost/anaconda3/bin:...

Su Windows:

$ ECHO %PATH%C:\Python39\Scripts\;C:\Python39\;C:\WINDOWS\system32;...

Ogni percorso in PATH è separato da un due punti in Unix e un punto e virgola in Windows.

È grazie a questi percorsi che non è necessario ricordare decine di percorsi assoluti per eseguibili installati nel sistema.

Lavorare con PATH in Windows

Modificare la variabile PATH è diverso nei sistemi Unix-like e nel terco mondo di Windows. Questa sezione tratta della gestione della variabile PATH in Windows.

L’operazione più comune che farai con PATH è aggiungere nuovi percorsi ad esso. Ad esempio, per aggiungere la directory C:\Users\user\Desktop\articles a PATH, dovresti aprire il Prompt dei comandi o Powershell con privilegi di amministratore. Quindi, esegui il seguente comando:

$ setx PATH "%PATH%;C:\Users\user\Desktop\articles"

Ma, non affrettarti – se non sei attento il comando setx può finire molto male per il tuo PATH. Quindi, la cosa sicura da fare in Windows è aggiungere percorsi tramite la finestra Proprietà di sistema.

Ecco le istruzioni passo passo e un GIF per aggiungere un nuovo percorso a PATH:

  1. Clicca sul pulsante Start e cerca ” Modifica le variabili d’ambiente del sistema ” e clicca sul primo risultato.
  2. Clicca su ” Variabili d’ambiente ” dalla finestra che appare.
  3. Decidi se il nuovo percorso dovrebbe essere aggiunto per l’utente corrente o per l’intero sistema.
  4. Sotto ” Variabili d’ambiente dell’utente per il tuo_nome_utente ” o ” Variabili d’ambiente di sistema “, scorri fino a trovare la variabile ” Path “.
  5. Selezionalo e clicca su Modifica .
  6. Nella nuova finestra popup, clicca su ” Nuovo ” e incolla il nuovo percorso, ad esempio C:\Users\user\Desktop\articles.
  7. Clicca OK tre volte.
GIF by me.

Dalla finestra popup finale, puoi anche eliminare o cambiare l’ordine dei percorsi (vedi l’ultima sezione sull’importanza dell’ordine).

Lavorare con PATH in Unix

Nelle sistemi Unix-like, aggiungere un nuovo percorso a PATH è molto più facile.

Per esempio, per aggiungere il percorso /home/bexgboost/articles, devi eseguire il seguente comando:

$ export PATH="/home/bexgboost/articles:$PATH"

Il nuovo percorso verrà aggiunto all’inizio di PATH. Per aggiungerlo alla fine, devi cambiare il posto di $PATH:

$ export PATH="$PATH:/home/bexgboost/articles"

Ma il nuovo percorso verrà aggiunto solo per la durata della sessione terminale corrente. Per aggiungerlo alla tua variabile di ambiente PATH in modo permanente, devi aggiungere il comando export al tuo file di configurazione della shell.

Il file di configurazione specifico dipende dalla shell che stai usando:

  • Per Bash: Aggiungi il comando export a ~/.bashrc o ~/.bash_profile (puoi anche considerare .profile, vedi qui per le differenze).
  • Per Zsh: Aggiungi il comando export a ~/.zshrc.
  • Per Fish: Aggiungi il comando export a ~/.config/fish/config.fish.

Una volta che hai scelto il tuo dalla lista (io sceglierò .bash_profile), usa il seguente comando echo:

$ echo 'export PATH="$PATH:/home/bexgboost/articles"' >> ~/.bash_profile

Quindi, ricarica il file di configurazione con source ~/.bash_profile ed è fatto.

L’ordine dei percorsi

L’ordine dei percorsi nella variabile PATH determina la priorità con cui vengono cercate le directory durante l’esecuzione di comandi o programmi.

Quando inserisci un comando nel terminale, il sistema operativo cerca il suo eseguibile controllando sequenzialmente ogni percorso in PATH da sinistra a destra. Se più directory contengono eseguibili con lo stesso nome, verrà utilizzato il primo.

Ad esempio, se si hanno più versioni di Python nel proprio sistema, l’eseguibile Python più a sinistra nel proprio PATH verrà utilizzato quando si esegue python nel terminale.

Conclusioni

Nel mondo della scienza dei dati e dell’IA, il terminale viene spesso trascurato. Invece, i corsi online e i bootcamp attirano l’attenzione dei principianti su IDE più brillanti come VSCode o JupyterLab.

Ma un giorno, l’inevitabile accade e devono aprire la vecchia shell sui propri computer. Ecco quando si incontrano un grande ostacolo nel proprio PATH.

Spero che questo articolo vi permetta di superare questo ostacolo.

Grazie per la lettura!

Se vi è piaciuto questo articolo e, ammettiamolo, il suo bizzarro stile di scrittura, immaginate di avere accesso a decine di altri articoli simili, tutti scritti da un autore brillante, affascinante e spiritoso (cioè io, tra l’altro :).

Per soli 4,99$ di abbonamento, avrete accesso non solo alle mie storie, ma anche a un tesoro di conoscenze dalle menti migliori e più brillanti di Nisoo. E se utilizzate il mio link di riferimento, guadagnerete la mia supernova di gratitudine e un high-five virtuale per supportare il mio lavoro.

Come membro di Nisoo, una parte della quota di iscrizione va agli scrittori che leggete, e avrete accesso completo ad ogni storia…

ibexorigin.medium.com