Як додати каталог до вашого $PATH в Linux

$PATH є одним із тихих маніпуляторів у фоновому режимі вашого комп’ютера Linux. Це тихо впливає на ваш користувальницький досвід, але в цьому немає нічого нечіткого. Ми пояснимо, що він робить, і як ви можете його налаштувати.

Що таке $PATH у Linux і як він працює?

Коли ви вводите команду у вікні терміналу та натискаєте Enter, ви починаєте досить багато дій, перш ніж ваша команда буде виконана.

Bash є оболонкою за замовчуванням у більшості дистрибутивів Linux. Він інтерпретує рядок тексту, який ви ввели, і визначає назви команд, змішані з параметрами, каналами, перенаправлення, і все ще є. Потім він знаходить виконувані двійкові файли для цих команд і запускає їх із заданими вами параметрами.

Перший крок, який виконує оболонка, щоб знайти виконуваний файл, — це визначити, чи задіяний двійковий файл. Якщо команда, яку ви використовуєте, знаходиться в самій оболонці (a «вбудована оболонка») подальшого пошуку не потрібно.

Найлегше знайти вбудовані оболонки, оскільки вони є невід’ємною частиною оболонки. Це як мати їх у поясі для інструментів — вони завжди з тобою.

Але якщо вам потрібен інший інструмент, вам доведеться покопатися в майстерні, щоб знайти його. Це на вашому верстаку чи на настінному вішаку? Саме це робить змінна середовища $PATH. Він містить список місць, у яких шукає оболонка, і порядок їх пошуку.

Якщо ви хочете перевірити, чи є команда a вбудована оболонка, псевдонім, функція або окремий двійковий файл mv /work/unfile, ви можете використовувати команду type, як показано нижче:

type clear
type cd

The

Це говорить нам, що clear є двійковим файлом, і перший знайдений у шляху знаходиться в /usr/bin. Можливо, на вашому комп’ютері встановлено більше однієї версії clear, але оболонка спробує використовувати її.

Не дивно, що CD є вбудованою оболонкою.

Список вашого $PATH

Легко побачити, що на вашому шляху. Просто введіть наступне, щоб скористатися командою echo і надрукуйте значення зберігається у змінній $PATH:

echo $PATH

The

Результатом є список місць розташування файлової системи, розділених двокрапкою (:). Оболонка шукає зліва направо по шляху, перевіряючи кожне розташування файлової системи на наявність відповідного виконуваного файлу для виконання вашої команди.

  Як встановити пробну версію Softmaker Office 2019 на Linux

Ми можемо вибрати свій шлях через список, щоб побачити розташування файлової системи, які будуть шукатися, і порядок, у якому вони будуть шукатися:

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/ігри
/usr/local/games
/snap/bin

Щось може бути неочевидним, так це пошук не починається в поточному робочому каталозі. Швидше, він проходить через перераховані каталоги і лише перераховані каталоги.

Якщо поточного робочого каталогу немає у вашому шляху, він не буде шукатися. Крім того, якщо у вас є команди, збережені в каталогах, яких немає в шляху, оболонка не знайде їх.

Щоб продемонструвати це, ми створили невелику програму під назвою rf. Після виконання rf друкує ім’я каталогу, з якого він був запущений, у вікні терміналу. Він розташований у /usr/local/bin. Ми також маємо новішу версію в каталозі /dave/work.

Ми вводимо наступну команду which щоб показати нам, яка версія нашої програми оболонка знайде та використає:

which rf

The

Оболонка повідомляє, що знайдена версія є тією в каталозі, який знаходиться в шляху.

Ми вводимо наступне, щоб запустити його:

rf

The

Версія 1.0 rf працює і підтверджує, що наші очікування виправдалися. Знайдена та виконана версія знаходиться в /usr/local/bin.

Щоб запустити будь-яку іншу версію rf на цьому комп’ютері, нам доведеться використовувати шлях до виконуваного файлу в командному рядку, як показано нижче:

./work/rf

The

Тепер, коли ми вказали оболонці, де знайти версію rf, яку ми хочемо запустити, вона використовує версію 1.1. Якщо ми віддаємо перевагу цій версії, ми можемо скопіювати її в каталог /usr/local/bin і замінити стару.

Скажімо, ми розробляємо нову версію rf. Нам потрібно буде часто запускати його під час розробки та тестування, але ми не хочемо копіювати невипущену збірку для розробки в оперативне середовище.

Або, можливо, ми завантажили нову версію rf і хочемо провести перевірочне тестування, перш ніж зробити її загальнодоступною.

Якщо ми додамо наш робочий каталог до шляху, ми змусимо оболонку знайти нашу версію. І ця зміна торкнеться лише нас — інші все одно використовуватимуть версію rf у /usr/local/bin .

  Як грати в Orcs Must Die! 2 на Linux

Додавання каталогу до вашого $PATH

Ви можете скористатися командою експорту для додати каталог до $PATH. Потім каталог включається до списку місць розташування файлової системи, які шукає оболонка. Коли оболонка знаходить відповідний виконуваний файл, вона припиняє пошук, тому ви хочете переконатися, що вона спочатку шукає у вашому каталозі, перед /usr/local/bin.

Це легко зробити. Для нашого прикладу ми вводимо наступне, щоб додати наш каталог на початок шляху, щоб це було перше місце пошуку:

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

The

Ця команда встановлює $PATH рівним каталогу, який ми додаємо, /home/dave/work, а потім і всьому поточному шляху.

Перший PATH не має знака долара ($). Встановлюємо значення для PATH. Остаточний $PATH має знак долара, оскільки ми посилаємося на вміст, що зберігається у змінній PATH. Також зверніть увагу на двокрапку (:) між новим каталогом та іменем змінної $PATH.

Давайте подивимося, як виглядає шлях зараз:

echo $PATH

The

Наш каталог /home/dave/work додається до початку шляху. Двокрапка, яку ми надали, відокремлює решту шляху.

Ми вводимо наступне, щоб переконатися, що наша версія rf є першою знайденою:

which rf

The

Доказ у пудингу працює rf, як показано нижче:

rf

The

Оболонка знаходить версію 1.1 і виконує її з /home/dave/work.

Щоб додати наш каталог в кінець шляху, ми просто перемістимо його в кінець команди, наприклад:

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

Зробити зміни постійними

Як Бет Брук-Марчиняк сказав: «Успіх — це добре, але успіх швидкоплинний». У момент, коли ви закриєте вікно терміналу, усі зміни, які ви внесли в $PATH, зникнуть. Щоб зробити їх постійними, ви повинні помістити команду експорту в файл конфігурації.

Коли ви розміщуєте команду експорту у файлі .bashrc, вона встановлює шлях кожного разу, коли ви відкриваєте вікно терміналу. На відміну від Сеанси SSH, для яких ви повинні увійти, вони називаються «інтерактивними» сесіями.

Раніше ви поміщали команду експорту у свій файл .profile, щоб встановити шлях для входу в термінальні сеанси.

Проте ми виявили, що якщо ми помістимо команду експорту в файли .bashrc або .profile, вона правильно встановить шлях як для інтерактивних сеансів, так і для входу в термінал. Ваш досвід може бути іншим. Щоб впоратися з усіма можливостями, ми покажемо вам, як це зробити в обох файлах.

  Як грати в Far Cry 5 на Linux

Використовуйте таку команду у своєму каталозі /home, щоб відредагувати файл .bashrc:

gedit .bashrc

The

Відкриється редактор gedit із завантаженим файлом .bashrc.

Редактор gedit з

Прокрутіть файл донизу, а потім додайте таку команду експорту, яку ми використовували раніше:

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

Збережіть файл. Потім або закрийте та знову відкрийте вікно терміналу, або скористайтеся командою dot, щоб прочитати файл .bashrc, як показано нижче:

. .bashrc

Потім введіть таку команду echo, щоб перевірити шлях:

echo $PATH

The

Це додає каталог /home/dave/work на початок шляху.

Процес додавання команди до файлу .profile такий самий. Введіть таку команду:

gedit .profile

The

Редактор gedit запускається із завантаженим файлом .profile.

Редактор gedit з

Додайте команду експорту в нижню частину файлу, а потім збережіть її. Закриття та відкриття нового вікна терміналу недостатньо для того, щоб примусово перечитати файл .profile. Щоб нові налаштування набули чинності, ви повинні вийти та знову ввійти або скористатися командою dot, як показано нижче:

. .profile

Встановлення шляху для всіх

Щоб встановити шлях для всіх, хто користується системою, ви можете відредагувати файл /etc/profile.

Вам потрібно буде використовувати sudo, як показано нижче:

sudo gedit /etc/profile

Коли запуститься редактор gedit, додайте команду експорту в нижню частину файлу.

Редактор gedit з

Збережіть і закрийте файл. Зміни набудуть чинності для інших під час наступного входу в систему.

Примітка щодо безпеки

Переконайтеся, що ви випадково не додали двокрапку «:» до шляху, як показано нижче.

The

Якщо ви це зробите, спочатку буде здійснено пошук у поточному каталозі, що створює ризик для безпеки. Скажімо, ви завантажили архівний файл і розпакували його в каталог. Ви дивитеся на файли і бачите інший заархівований файл. Ви ще раз викликаєте unzip, щоб розпакувати цей архів.

Якщо перший архів містив виконуваний файл під назвою unzip, який був шкідливим виконуваним файлом, ви випадково запустите його замість справжнього виконуваного файлу unzip. Це станеться тому, що оболонка спочатку шукатиме поточний каталог.

Тому будьте обережні, коли вводите команди експорту. Використовуйте echo $PATH, щоб переглянути їх і переконатися, що вони такі, якими ви хочете, щоб вони були.