Cum să adăugați un director la $PATH în Linux

$PATH este unul dintre manipulatoarele silențioase din fundalul computerului dumneavoastră Linux. Îți afectează în liniște experiența utilizatorului, dar nu este nimic dubios în asta. Vă vom explica ce face și cum îl puteți ajusta.

Ce este $PATH pe Linux și cum funcționează?

Când tastați o comandă într-o fereastră de terminal și apăsați Enter, începeți destul de multă activitate înainte ca comanda să fie chiar executată.

Bash este shell-ul implicit pe majoritatea distribuțiilor Linux. Acesta interpretează linia de text pe care ați introdus-o și identifică numele comenzilor amestecate cu parametrii, conductele, redirecționări, și orice altceva este acolo. Apoi localizează fișierele binare executabile pentru acele comenzi și le lansează cu parametrii pe care i-ați furnizat.

Primul pas pe care îl face shell-ul pentru a localiza executabilul este să identifice dacă este chiar implicat un binar. Dacă comanda pe care o utilizați se află în shell-ul propriu-zis (a „shell încorporat”) nu este necesară nicio căutare suplimentară.

Incorporațiile Shell sunt cele mai ușor de găsit, deoarece sunt parte integrantă a shell-ului. Este ca și cum le-ai avea într-o centură de scule – sunt mereu cu tine.

Dacă ai nevoie de unul dintre celelalte instrumente ale tale, totuși, trebuie să scotoci în atelier pentru a-l găsi. Este pe banca ta de lucru sau pe un cuier de perete? Asta face variabila de mediu $PATH. Conține o listă de locuri în care shell-ul caută și ordinea în care vor fi căutate.

Dacă doriți să vedeți dacă o comandă este a shell încorporat, un alias, o funcție sau un binar autonom mv /work/unfile, puteți folosi comanda tip așa cum se arată mai jos:

type clear
type cd

The

Acest lucru ne spune că clear este un fișier binar, iar primul găsit în cale se află la /usr/bin. Este posibil să aveți mai multe versiuni de clear instalate pe computer, dar aceasta este cea pe care shell-ul va încerca să o folosească.

Deloc surprinzător, cd este un shell încorporat.

Listarea dvs. $PATH

Este ușor să vezi ce este în calea ta. Doar tastați următoarele pentru a utiliza comanda echo și imprimați valoarea păstrat în variabila $PATH:

echo $PATH

The

Rezultatul este o listă de locații ale sistemului de fișiere delimitate cu două puncte (:). Shell-ul caută de la stânga la dreapta prin cale, verificând fiecare locație a sistemului de fișiere pentru un executabil potrivit pentru a vă executa comanda.

  Cum se instalează tema Arrongin pe Linux

Ne putem alege în listă pentru a vedea locațiile sistemului de fișiere care vor fi căutate și ordinea în care vor fi căutate:

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/cos
/usr/jocuri
/usr/local/games
/snap/bin

Ceva care ar putea să nu fie imediat evident este că căutarea nu începe în directorul de lucru curent. Mai degrabă, își face drum prin directoarele listate și numai prin directoarele listate.

Dacă directorul de lucru curent nu se află în calea dvs., acesta nu va fi căutat. De asemenea, dacă aveți comenzi stocate în directoare care nu sunt în cale, shell-ul nu le va găsi.

Pentru a demonstra acest lucru, am creat un mic program numit rf. Când este executat, rf afișează numele directorului din care a fost lansat în fereastra terminalului. Este situat în /usr/local/bin. Avem și o versiune mai nouă în directorul /dave/work.

Introducem următoarea ce comandă pentru a ne arăta ce versiune a programului nostru shell-ul va găsi și va folosi:

which rf

The

Shell-ul raportează că versiunea găsită este cea din directorul care se află în cale.

Introducem următoarele pentru a-l porni:

rf

The

Versiunea 1.0 a rf rulează și confirmă că așteptările noastre au fost corecte. Versiunea găsită și executată se află în /usr/local/bin.

Pentru a rula orice altă versiune de rf pe acest computer, va trebui să folosim calea către executabil pe linia de comandă, așa cum se arată mai jos:

./work/rf

The

Acum că am spus shell-ului unde să găsim versiunea de rf pe care vrem să o rulăm, folosește versiunea 1.1. Dacă preferăm această versiune, o putem copia în directorul /usr/local/bin și o putem suprascrie pe cea veche.

Să presupunem că dezvoltăm o nouă versiune de rf. Va trebui să-l rulăm frecvent pe măsură ce îl dezvoltăm și îl testăm, dar nu dorim să copiem o versiune de dezvoltare nelansată în mediul live.

Sau, poate că am descărcat o nouă versiune de rf și vrem să facem niște teste de verificare înainte de a o face disponibilă publicului.

Dacă adăugăm directorul nostru de lucru la cale, facem ca shell-ul să găsească versiunea noastră. Și această schimbare ne va afecta doar pe noi — alții vor folosi în continuare versiunea rf în /usr/local/bin .

  Cum se face upgrade la Linux Mint 20.2

Adăugarea unui director la $PATH

Puteți folosi comanda de export pentru adăugați un director spre $PATH. Directorul este apoi inclus în lista de locații ale sistemului de fișiere pe care le caută shell. Când shell-ul găsește un executabil care se potrivește, oprește căutarea, așa că doriți să vă asigurați că caută mai întâi în directorul dvs., înainte de /usr/local/bin.

Acest lucru este ușor de făcut. Pentru exemplul nostru, introducem următoarele pentru a adăuga directorul nostru la începutul căii, astfel încât să fie prima locație căutată:

export PATH=/home/dave/work:$PATH

The

Această comandă setează $PATH să fie egal cu directorul pe care îl adăugăm, /home/dave/work și apoi întreaga cale curentă.

Prima PATH nu are semnul dolarului ($). Setăm valoarea pentru PATH. Ultimul $PATH are un semn dolar, deoarece facem referință la conținutul stocat în variabila PATH. De asemenea, rețineți două puncte (:) dintre noul director și numele variabilei $PATH.

Să vedem cum arată drumul acum:

echo $PATH

The

Directorul nostru /home/dave/work este adăugat la începutul căii. Colonul pe care l-am furnizat îl separă de restul căii.

Introducem următoarele pentru a verifica că versiunea noastră de rf este prima găsită:

which rf

The

Dovada din budincă este rf, așa cum se arată mai jos:

rf

The

Shell-ul găsește versiunea 1.1 și o execută din /home/dave/work.

Pentru a adăuga directorul nostru la sfârșitul căii, îl mutăm la sfârșitul comenzii, așa:

export PATH=$PATH:/home/dave/work

Asigurarea permanentă a schimbărilor

La fel de Beth Brooke-Marciniak a spus: „Succesul este bine, dar succesul este trecător”. În momentul în care închideți fereastra terminalului, toate modificările pe care le-ați făcut la $PATH dispar. Pentru a le face permanente, trebuie să puneți comanda de export într-un fișier de configurare.

Când puneți comanda de export în fișierul dvs. .bashrc, aceasta setează calea de fiecare dată când deschideți o fereastră de terminal. Spre deosebire de sesiuni SSH, pentru care trebuie să vă autentificați, acestea se numesc sesiuni „interactive”.

În trecut, puneai comanda de export în fișierul tău .profile pentru a seta calea pentru sesiunile de conectare la terminal.

Cu toate acestea, am constatat că, dacă punem comanda de export fie în fișierele .bashrc, fie în fișierele .profile, aceasta setează corect calea atât pentru sesiunile interactive, cât și pentru sesiunile de conectare la terminal. Experiența ta poate fi diferită. Pentru a face față tuturor eventualităților, vă vom arăta cum să faceți acest lucru în ambele fișiere.

  Cum se instalează Skype pe Linux

Utilizați următoarea comandă în directorul dvs. /home pentru a edita fișierul .bashrc:

gedit .bashrc

The

Editorul gedit se deschide cu fișierul .bashrc încărcat.

Editorul gedit cu

Derulați până în partea de jos a fișierului, apoi adăugați următoarea comandă de export pe care am folosit-o mai devreme:

export PATH=/home/dave/work:$PATH

Salvați fișierul. Apoi, fie închideți și redeschideți fereastra terminalului, fie utilizați comanda dot pentru a citi fișierul .bashrc, după cum urmează:

. .bashrc

Apoi, tastați următoarea comandă echo pentru a verifica calea:

echo $PATH

The

Aceasta adaugă directorul /home/dave/work la începutul căii.

Procesul de adăugare a comenzii la fișierul .profile este același. Tastați următoarea comandă:

gedit .profile

The

Editorul gedit se lansează cu fișierul .profile încărcat.

Editorul gedit cu

Adăugați comanda de export în partea de jos a fișierului, apoi salvați-o. Închiderea și deschiderea unei noi ferestre de terminal este insuficientă pentru a forța recitirea fișierului .profile. Pentru ca noile setări să aibă efect, trebuie să vă deconectați și să vă reconectați sau să utilizați comanda dot așa cum se arată mai jos:

. .profile

Stabilește calea pentru toată lumea

Pentru a seta calea pentru toți cei care folosesc sistemul, puteți edita fișierul /etc/profile.

Va trebui să utilizați sudo, după cum urmează:

sudo gedit /etc/profile

Când se lansează editorul gedit, adăugați comanda de export în partea de jos a fișierului.

Editorul gedit cu

Salvați și închideți fișierul. Modificările vor intra în vigoare pentru alții data viitoare când se conectează.

O notă despre securitate

Asigurați-vă că nu adăugați accidental două două puncte „:” la cale, așa cum se arată mai jos.

The

Dacă faceți acest lucru, aceasta va căuta mai întâi în directorul curent, ceea ce introduce un risc de securitate. Să presupunem că ați descărcat un fișier arhivă și l-ați dezarhivat într-un director. Te uiți la fișiere și vezi un alt fișier arhivat. Mai apelați la unzip pentru a extrage acea arhivă.

Dacă prima arhivă conținea un fișier executabil numit unzip care era un executabil rău intenționat, l-ai declanșa accidental pe acela în loc de executabilul real de dezarhivare. Acest lucru s-ar întâmpla deoarece shell-ul ar căuta mai întâi în directorul curent.

Prin urmare, aveți grijă întotdeauna când introduceți comenzile de export. Folosiți echo $PATH pentru a le revizui și pentru a vă asigura că sunt așa cum doriți să fie.