Що робить експортна лінія PATH у .bashrc?


9

Я не так в Linux, і я маю наступні сумніви після навчального посібника.

Я повинен змінити bashrcфайл. Які налаштування містяться в цьому файлі? Я думаю, що щось стосувалося середовища bash shell, але я не дуже впевнений у цьому.

Я повинен вставити цей рядок:

export PATH=$HOME/.local/bin:$HOME/.local/usr/bin:$PATH

Що саме ця лінія?

Я думаю, що це exportтвердження використовується для створення нової змінної, що робить її доступною для іншої програми.

Але що саме ця лінія? Чи PATHє назва змінної, яку я визначаю? Що таке $HOME?

Що означає :символ між PATH=$HOME/.local/binі $HOME/.local/usr/binта $PATHрозділом у попередньому виразі?

Що саме означає цей вираз?


Між елементами є роздільником для кожного сегмента. Без цього ваш шлях був би одним безперервним пробігом і не працював.
Терранс

В Ubuntu подібні PATHмодифікації вже зроблені у ~/.profileфайлі, тому робити подібні речі трохи непослідовно ~/.bashrc. Краще IMO для зміни коду, який вже є в ~/.profileразі потреби. На даний момент ~/.profileфайл за замовчуванням включає цей рядок:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Gunnar Hjalmarsson

@GunnarHjalmarsson: Є деякі ситуації, які роблять .profile та .bashrc різними. Файл .profile аналізується оболонками входу, а не допоміжними оболонками. Але оскільки вам потрібно все-таки увійти в систему, щоб запустити передплату, це нормально, оскільки підпакети успадкують $ PATH. Файл .bashrc не буде проаналізований оболонкою входу, а буде проаналізований за допомогою допоміжних оболонок. Різниця виникає, коли у вас є деякі речі, які не є дітьми оболонками входу (можливо, якийсь фантазійний сценарій автоматизації, який викликає інші сценарії, як-от git совершить гак) - нічого в .profile не буде прочитано, тому вони будуть ігноровані
slebetman

@slebetman: Так, і в разі робочого столу є ще одна відмінність , яке ви не згадуєте: В відміну від ~/.bashrc, ~/.profileздобутий менеджером дисплея, тому тільки змінні , встановлений ~/.profileдоступні при запуску програми з графічного середовища. І це відбувається рано, тому для автоматичних процесів для сеансу повинно бути нормально.
Gunnar Hjalmarsson

Відповіді:


16

Щоб резюмувати все, що згадується в цьому запитанні,

exportчастина

У exportлінії означає , що змінний , що ви оголошуєте після того , як буде доступно для дочірніх процесів. Іншими словами, процеси зможуть отримати доступ до змінної, оголошеної після exportключового слова, через середовище оболонки. Отже, якщо ви зробили щось на кшталт export FOO="BAR"і потім знайшли зміни в середовищі своєї оболонки, ви можете набрати $FOOта отримати BAR.

PATHчастина

Рядок шляху точно такий, як ви заявили: він оголошує змінну, названу PATHдля середовища оболонки. У середовищі bash PATHмає спеціальну мету визначити, де комп'ютер шукає програми. Це дозволяє вводити власні команди для скриптів без набору повного каталогу. Зауважте, що PATH позначено для експорту за замовчуванням, тому цей рядок не потрібно переписувати. Але це не боляче.

$HOMEВ PATHзмінної

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

:Між обома шляхами

:Еквівалентна коми в пропозиціях. Він просто розділяє три каталоги. Без цих трьох каталогів консоль не розпізнавала б отримані команди. Ці три місця - це три каталоги, які найчастіше використовуються для зберігання скриптів / командних файлів, і тому вони повинні бути доступними терміналом без необхідності виписувати повний шлях до файлу.


Чудова відповідь! "Експортний рядок означає, що змінна, яку ви заявляєте після того, як буде доступною для дочірніх процесів", є батьківським для цих дочірніх процесів терміналом, звідки я запускаю команду?
vadasambar

5

Ця PATHзмінна дає змогу дізнатися, де шукати виконувані програми, тому, якщо у вас є сценарій або якийсь інший виконуваний файл $HOME/.local/bin, модифікація PATHдозволить вам ввести та запустити цей файл так само, як ви робите з lsабо df.

exportозначає лише зробити цю PATHзмінну доступною і для інших програм, які ви запускаєте з bash.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.