Si të shtoni një drejtori në PATH tuaj në Linux
PATH
është një nga manipuluesit e heshtur në sfondin e kompjuterit tuaj Linux. Ajo ndikon në heshtje përvojën tuaj të përdoruesit, por nuk ka asgjë të dyshimtë në lidhje me të. Ne do të shpjegojmë se çfarë bën dhe si mund ta rregulloni.
Çfarë është $PATH në Linux dhe si funksionon?
Kur shtypni një komandë në një dritare terminali dhe shtypni Enter, ju filloni mjaft aktivitete përpara se komanda juaj të ekzekutohet.
Bash është predha e parazgjedhur në shumicën e shpërndarjeve Linux. Ai interpreton rreshtin e tekstit që keni futur dhe identifikon emrat e komandave të përziera me parametrat, tubacionet, ridrejtimet dhe çfarëdo tjetër që është atje. Më pas lokalizon binarët e ekzekutueshëm për ato komanda dhe i lëshon ato me parametrat që keni dhënë.
Hapi i parë që shell ndërmerr për të gjetur ekzekutuesin është identifikimi nëse një binar është i përfshirë. Nëse komanda që përdorni është brenda vetë guaskës (një predhë e integruar) nuk kërkohet kërkim i mëtejshëm.
Instalimet e guaskës janë më të lehtat për t'u gjetur, sepse ato janë pjesë përbërëse e guaskës. Është si t'i kesh në një rrip veglash - ata janë gjithmonë me ju.
Sidoqoftë, nëse keni nevojë për një nga mjetet tuaja të tjera, duhet të kërkoni në punëtori për ta gjetur atë. A është në tavolinën tuaj të punës apo në një varëse muri? Kjo është ajo që bën ndryshorja e mjedisit PATH
. Ai mban një listë të vendeve që kërkon guaska dhe renditjen në të cilën do të kërkohen.
Nëse dëshironi të shihni nëse një komandë është një guaskë e integruar, një pseudonim, një funksion ose një mv binar i pavarur /work/unfile, mund të përdorni komandën type
siç tregohet më poshtë:
type clear
type cd
Kjo na tregon se clear
është një skedar binar dhe i pari që gjendet në shteg ndodhet në /usr/bin
. Mund të keni më shumë se një version të clear
të instaluar në kompjuterin tuaj, por ky është ai që shell do të përpiqet të përdorë.
Çuditërisht, cd
është një predhë e integruar.
Renditja e $PATH tuaj
Është e lehtë të shohësh se çfarë është në rrugën tënde. Thjesht shkruani sa vijon për të përdorur komandën echo
dhe printoni vlerën e mbajtur në ndryshoren PATH
:
echo $PATH
Dalja është një listë e pikave (:
) të përcaktuara të vendndodhjeve të sistemit të skedarëve. Predha kërkon nga e majta në të djathtë përmes shtegut, duke kontrolluar çdo vendndodhje të sistemit të skedarëve për një ekzekutues që përputhet për të kryer komandën tuaj.
Ne mund të zgjedhim rrugën tonë përmes listimit për të parë vendndodhjet e sistemit të skedarëve që do të kërkohen dhe rendin në të cilin do të kërkohen:
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
Diçka që mund të mos jetë menjëherë e dukshme është se kërkimi nuk fillon në drejtorinë aktuale të punës. Përkundrazi, ai funksionon nëpër drejtoritë e listuara dhe vetëm drejtoritë e listuara.
Nëse drejtoria aktuale e punës nuk është në rrugën tuaj, ajo nuk do të kërkohet. Gjithashtu, nëse keni komanda të ruajtura në drejtori që nuk janë në rrugë, guaska nuk do t'i gjejë ato.
Për ta demonstruar këtë, ne krijuam një program të vogël të quajtur rf
. Kur ekzekutohet, rf
printon emrin e drejtorisë nga e cila është nisur në dritaren e terminalit. Ndodhet në /usr/local/bin
. Kemi gjithashtu një version më të ri në drejtorinë /dave/work
.
Ne shtypim komandën e mëposhtme which
për të na treguar se cilin version të programit tonë do të gjejë dhe përdor guaska:
which rf
Predha raporton se versioni që gjeti është ai në drejtorinë që është në rrugë.
Ne shtypim sa vijon për ta ndezur atë:
rf
Versioni 1.0 i rf
ekzekutohet dhe konfirmon se pritjet tona ishin të sakta. Versioni i gjetur dhe i ekzekutuar ndodhet në /usr/local/bin
.
Për të ekzekutuar çdo version tjetër të rf
në këtë kompjuter, do të duhet të përdorim shtegun për në ekzekutuesin në vijën e komandës, siç tregohet më poshtë:
./work/rf
Tani që i kemi thënë shell-it se ku mund të gjejë versionin e rf
që duam të ekzekutojmë, ai përdor versionin 1.1. Nëse preferojmë këtë version, mund ta kopjojmë atë në direktorinë /usr/local/bin
dhe ta mbishkruajmë atë të vjetër.
Le të themi se po zhvillojmë një version të ri të rf
. Do të na duhet ta ekzekutojmë shpesh ndërsa e zhvillojmë dhe testojmë, por nuk duam të kopjojmë një ndërtim zhvillimi të papublikuar në mjedisin e drejtpërdrejtë.
Ose, ndoshta kemi shkarkuar një version të ri të rf
dhe duam të bëjmë disa testime verifikimi mbi të përpara se ta bëjmë të disponueshëm publikisht.
Nëse shtojmë direktorinë tonë të punës në shtegun, e bëjmë guaskën të gjejë versionin tonë. Dhe ky ndryshim do të ndikojë vetëm tek ne—të tjerët do të vazhdojnë të përdorin versionin e rf
në /usr/local/bin
.
Shtimi i një drejtorie në $PATH tuaj
Ju mund të përdorni komandën eksporto
për të shtuar një direktori në PATH
. Drejtoria më pas përfshihet në listën e vendndodhjeve të sistemit të skedarëve që shell kërkon. Kur guaska gjen një ekzekutues që përputhet, ajo ndalon së kërkuari, kështu që ju dëshironi të siguroheni që fillimisht të kërkojë në drejtorinë tuaj, përpara /usr/local/bin
.
Kjo është e lehtë për t'u bërë. Për shembullin tonë, ne shtypim sa vijon për të shtuar drejtorinë tonë në fillim të shtegut, në mënyrë që të jetë vendndodhja e parë e kërkuar:
export PATH=/home/dave/work:$PATH
Kjo komandë vendos PATH
të jetë e barabartë me drejtorinë që po shtojmë, /home/dave/work
dhe më pas të gjithë shtegun aktual.
PATH
e parë nuk ka shenjë dollari ($
). Ne vendosëm vlerën për PATH
. PATH
përfundimtar ka një shenjë dollari sepse po i referohemi përmbajtjes së ruajtur në ndryshoren PATH
. Gjithashtu, vini re dy pika (:
) midis drejtorisë së re dhe emrit të ndryshores PATH
.
Le të shohim se si duket rruga tani:
echo $PATH
Drejtoria jonë /home/dave/work
shtohet në fillim të shtegut. Zorra e trashë që kemi dhënë e ndan pjesën tjetër të shtegut.
Ne shtypim sa vijon për të verifikuar që versioni ynë i rf
është i pari i gjetur:
which rf
Prova në puding po funksionon rf
, siç tregohet më poshtë:
rf
Predha gjen versionin 1.1 dhe e ekzekuton atë nga /home/dave/work
.
Për të shtuar drejtorinë tonë në fund të shtegut, ne thjesht e zhvendosim atë në fund të komandës, si kjo:
export PATH=$PATH:/home/dave/work
Bërja e Përhershme e Ndryshimeve
Siç tha Beth Brooke-Marciniak, Suksesi është i mirë, por suksesi është i përkohshëm. Në momentin që mbyllni dritaren e terminalit, çdo ndryshim që keni bërë në PATH
është zhdukur. Për t'i bërë ato të përhershme, duhet të vendosni komandën tuaj export
në një skedar konfigurimi.
Kur vendosni komandën eksporto
në skedarin tuaj .bashrc
, ai cakton shtegun sa herë që hapni një dritare terminali. Ndryshe nga sesionet SSH
, për të cilat duhet të identifikoheni, këto quhen sesione interaktive.
Në të kaluarën, do të vendosnit komandën eksporto
në skedarin tuaj .profile
për të vendosur shtegun për sesionet e hyrjes në terminal.
Megjithatë, zbuluam se nëse vendosim komandën export
në skedarët .bashrc
ose .profile
, ajo vendosi saktë shtegun për të dy skedarët interaktivë dhe hyni në sesionet e terminalit. Përvoja juaj mund të jetë e ndryshme. Për të trajtuar të gjitha rastet, ne do t'ju tregojmë se si ta bëni atë në të dy skedarët.
Përdorni komandën e mëposhtme në drejtorinë tuaj /home
për të modifikuar skedarin .bashrc
:
gedit .bashrc
Redaktori gedit
hapet me skedarin .bashrc
të ngarkuar.
Lëvizni në fund të skedarit dhe më pas shtoni komandën e mëposhtme të eksportit që kemi përdorur më parë:
export PATH=/home/dave/work:$PATH
Ruani skedarin. Më pas, mbyllni dhe rihapni dritaren e terminalit ose përdorni komandën dot
për të lexuar skedarin .bashrc
, si më poshtë:
Më pas, shtypni komandën e mëposhtme echo
për të kontrolluar shtegun:
echo $PATH
Kjo shton drejtorinë /home/dave/work
në fillim të shtegut.
Procesi për të shtuar komandën në skedarin .profile
është i njëjtë. Shkruani komandën e mëposhtme:
gedit .profile
Redaktori gedit
hapet me skedarin .profile
të ngarkuar.
Shtoni komandën eksporto
në fund të skedarit dhe më pas ruajeni. Mbyllja dhe hapja e një dritareje të re terminali është e pamjaftueshme për të detyruar skedarin .profile
të rilexohet. Që cilësimet e reja të hyjnë në fuqi, duhet të dilni dhe të hyni përsëri ose të përdorni komandën dot
siç tregohet më poshtë:
. .profile
Vendosja e Rrugës për Të gjithë
Për të vendosur shtegun për të gjithë ata që përdorin sistemin, mund të modifikoni skedarin /etc/profile
.
Ju do të duhet të përdorni sudo
, si më poshtë:
sudo gedit /etc/profile
Kur hapet redaktori gedit
, shtoni komandën e eksportit në fund të skedarit.
Ruani dhe mbyllni skedarin. Ndryshimet do të hyjnë në fuqi për të tjerët herën tjetër që të identifikohen.
Një shënim mbi sigurinë
Sigurohuni që të mos shtoni rastësisht një dy pika kryesore :
në shtegun, siç tregohet më poshtë.
Nëse e bëni këtë, kjo do të kërkojë fillimisht drejtorinë aktuale, e cila paraqet një rrezik sigurie. Thuaj se keni shkarkuar një skedar arkiv dhe e keni zbërthyer atë në një drejtori. Ju shikoni skedarët dhe shihni një skedar tjetër të zip. Ju telefononi unzip edhe një herë për të nxjerrë atë arkiv.
Nëse arkivi i parë përmbante një skedar të ekzekutueshëm të quajtur unzip
që ishte një ekzekutues me qëllim të keq, ju do ta aktivizoni aksidentalisht atë në vend të ekzekutuesit real unzip
. Kjo do të ndodhte sepse guaska do të shikonte fillimisht në drejtorinë aktuale.
Pra, jini gjithmonë të kujdesshëm kur shkruani komandat tuaja eksporto
. Përdorni echo
PATH për t'i rishikuar dhe për t'u siguruar që janë ashtu siç dëshironi të jenë.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts