Как PATH работи в Bash

How Does Path Work Bash



Когато въвеждате команда в терминала на Linux, обикновено извиквате програма, за да извършите определена работа, например, ls , CD , rm , mkdir и т.н. Всички тези програми се намират някъде във файловата система, нали? Как bash знае къде са тези програми?

Тук влизат в действие променливите на средата, особено променливата PATH. Тази променлива е отговорна за това да каже на bash къде да търси тези програми. Нека да проверим как работи PATH и как да преглеждате/променяте PATH.







Променлива на околната среда и $ PATH

В терминологията на обвивката средата е област, която черупката изгражда всеки път, когато стартира сесия. За управление на околната среда има променливи на околната среда, обозначаващи различни части на околната среда. Стойността на променливата може да бъде низ, местоположение на директорията, стойност или други.



PATH е такава променлива на средата, която следи определени директории. По подразбиране променливата PATH съдържа следните местоположения.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /сутринта
  • /sbin
  • /snap/bin (ако е инсталиран Snap)

Искате ли да видите кои директории в момента са регистрирани под PATH? Стартирайте терминал и изпълнете следната команда.





$изхвърлен $ PATH

Тук знакът $ обозначава променлива. The изхвърлен команда отпечатва стойността на променливата PATH.



Сега, защо тази специфична променлива на средата е толкова важна? Това е така, защото как черупката и системата като цяло се отнасят с нея. Променливата PATH съхранява, където могат да бъдат намерени изпълними файлове. Всеки път, когато се изпълнява някаква команда, черупката търси директориите на PATH за целевия изпълним файл и го изпълнява.

Например, нека тестваме с изхвърлен команда. Тук изпълнявам команда echo.

$изхвърленЗдравей свят!

Къде е изпълнимият файл изхвърлен ? Изпълнете следващата команда, за да разберете.

$който изхвърлен

Както виждаме, изхвърлен изпълнимият файл се намира в/usr/bin/echo. Къде се намира кой? Нека разберем.

$който който

Намира се и на/usr/bin/which. Повечето от командните инструменти се намират в директорията /usr /bin. Тук bash се консултира с PATH за местоположенията за търсене на изпълнимите (ите) команди.

Промяна на PATH

Преди да променим стойността на PATH, важно е да разберем неговата структура. Изпълнете командата отново, за да проверите стойността на PATH.

$изхвърлен $ PATH

Забележете, че всяка от директориите е разделена със знак:.

Добавяне на директория към PATH

За да добавим персонализирана директория към PATH, ще използваме помощта на файла bashrc. Това е специален bash скрипт, който bash се зарежда всеки път, когато започва нова bash сесия. Обърнете внимание, че файлът bashrc е уникален за всеки потребител в системата Linux.

Отворете файла bashrc в текстов редактор. Ако файлът bashrc още не присъства, редакторът ще го създаде автоматично.

$дойдох~/.bashrc

Тук това е bashrc по подразбиране, който идва с Ubuntu. Отидете до последния файл (ако съществува) и добавете следния ред.

$износ ПЪТ='$ PATH: / '

Тук новата стойност на променливата PATH ще бъде старата променлива заедно с новата директория, която току -що добавихме.

Запазете файла и кажете на bash да го презареди.

$източник~/.bashrc

Нека проверим дали новият път е добавен успешно.

$изхвърлен $ PATH

Вола! PATH актуализиран успешно! Сега bash също ще търси по новия път за изпълними файлове. Вече имам сценарий demo.sh на работния плот. Нека видим дали bash може да го извика, без да посочва точното местоположение.

$demo.sh

Да, bash може директно да го извика без никакви проблеми.

Премахване на директория от PATH

Няма ясен начин за добавяне/премахване на директории от PATH. Нека обясня.

Стойността на PATH е действително фиксирана. Тогава какво ще кажете за трика с bashrc? Bashrc е bash скрипт, който bash се зарежда всеки път, когато стартира сесия. В bashrc току-що декларирахме, че новата стойност на PATH ще бъде стойността му по подразбиране и дефинираната от потребителя директория. Сега, всеки път, когато bash се зарежда, той вижда, че bashrc казва да присвои нова стойност на PATH и това е, което прави.

По същия начин, ако искаме да премахнем директория от PATH, трябва да присвоим отново различна стойност на PATH в bashrc, така че всеки път, когато bash стартира, да използва променената стойност.

Нека да разгледаме този пример. Готов съм да премахна директорията ~/Desktop от PATH.

$изхвърлен $ PATH | sed 's/: ~ /Desktop $ //'

Ако директорията ще бъде/home/wrong/dir, командата ще изглежда така.

$изхвърлен $ PATH | sed 's/: /home /wrong /dir $ //'

Тук интересната част е инструментът sed. Научете повече за sed тук и тук . Накратко, използвайки sed, ние променяме изхода на изхвърлен команда. Сега можем да използваме този модифициран изход, за да променим стойността на PATH.

Отворете bashrc в текстов редактор и добавете следните редове. Умишлено запазвам предишните редове, за да докажа, че работи.

$износ ПЪТ='$ (ехо $ PATH | sed -e 's/: ~ /Desktop $ //')'

Като алтернатива можете също ръчно да зададете стойността на PATH. Това е труден процес, но по -ясен и прост.

$износ ПЪТ=/usr/местен/sbin:/usr/местен/съм:/usr/sbin:/usr/съм:/sbin:/съм:
/usr/игри:/usr/местен/игри:/щракнете/съм

Тук стойността на командата ще бъде присвоена на PATH. Запазете файла и презаредете bashrc.

$източник~/.bashrc

Нека проверим резултата.

$изхвърлен $ PATH

Стойността на PATH се актуализира!

Последни мисли

В bash променливата PATH е важна. Всяка програма, която работи през bash сесията, наследява променливата, така че е важно PATH да включва само необходимите директории. Добавянето на още директория само ще добави излишък към системата.

За да видите всички променливи на обкръжението за bash, изпълнете тази команда. Първата командна част ще върне всички променливи на средата, а втората част ще сортира изхода във възходящ ред.

$env | вид

Искате ли да подправите вашия bash опит? Bash псевдоними предлагат уникален начин за ускоряване и подправяне на нещата. Научете повече за псевдонимите bash .

Наслади се!