Що таке змінна PATH Unix і як її додати?


11

Багато навчальних посібників з програмування просять користувачів додати щось до них, PATHале не пояснюють, що це таке. Існуючі ресурси, які пояснюють PATHкористувачам нове в командному рядку, не дуже хороші.

  • Що таке PATHзмінна Unix ?

  • Я просто завантажив програму, потім спробував запустити команду в терміналі і отримав command not found. Що це стосується PATH?

  • Я додав щось до PATHцієї команди, а потім все спрацювало:

    export PATH=/path/to/some/bin:$PATH
    

    ... але потім я command not foundзнову отримав наступного разу, коли запустив комп’ютер. Як я можу змусити її залишатися PATHкожен раз, коли я відкриваю термінал?

  • Який найкращий спосіб визначити, чи така програма, як Git чи gccвже завантажена на мій комп'ютер?


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

4
Б'юсь об заклад, що я можу знайти 50 звернень, якщо шукати google для цього питання. Чому ти не можеш?
trojanfoe

2
І якщо жодне з цих посилань не вказує на SO для питання, яке може бути тут, то його слід додати тут. Ми хочемо, щоб ТА була там, де Google звертається з питаннями програмування.

Будь ласка, перегляньте це повідомлення MSO щодо мотивів Кевіна в питанні цього питання. Він, швидше за все, зробить редагування, щоб пояснити, наскільки ця інформація корисна.
jmort253

1
@ jmort253: Ну, він повинен почати це робити швидко. 4/5 закритих голосів. Я не закриваюсь, бо знаю, що хоче відредагувати питання, але краще зробити це швидко.
Привид

Відповіді:


17

Шлях UNIX - це змінна середовище, яка є переліком каталогів, в яких потрібно шукати програми, які ви намагаєтеся запустити. Це дозволяє вам уникнути необхідності використовувати повне ім'я шляху для таких завдань /bin/ls(наприклад, шляхом введення /binшляху).

Наприклад, шлях може складатися з:

/bin:/usr/bin:/usr/sbin

це означає, що коли ви введете команду xyzzy, вона спробує запустити перший файл, який він знайде з поточного списку:

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

(вона може пропустити невиконані файли, якщо вона розумна).

Ви можете додати речі до шляху за допомогою команди типу:

set PATH=/directory/to/add:$PATH:/low/priority/path

який розміщується /directory/to/addна початку списку пошуку шляхів та /low/priority/pathв кінці.

Однак зазвичай це змінюється лише для поточної оболонки. Якщо ви хочете внести зміни в кожну оболонку, вам слід додати цей рядок до одного зі своїх запуску файлів, наприклад, $HOME/.profileабо /etc/profile. Правильний файл, який потрібно використовувати, залежить від самої оболонки та того, як ви створили файли запуску. Не завжди легко сказати, куди він повинен піти, але правила, як правило, пояснюються на сторінці сторінки для будь-якої оболонки, яку ви використовуєте.

Зазвичай ви можете знайти команду на шляху за допомогою одного з:

which cmd
whence cmd

щоб знайти cmdвиконуваний файл. Наприклад, у моїй системі Debian я отримую таку стенограму:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

1
Чи належить це питання про stackoverflow?
trojanfoe

@trojanfoe, як і будь-яке питання, пов’язане з оболонками, так, я б так вважав. Це є також мовою програмування.

Я змінив відповідь, щоб використовувати її :як роздільник, як це використовується на * nix. Windows використовує ;(можливо, тому, що :вже має значення в C:).
Йоахім Зауер

Насправді, @Joachim, можливо, правильніше сказати, що дана оболонка (а не сам UNIX) має специфічний роздільник каталогів, але ти маєш рацію для всіх тих, кого я використовую вгорі голови. Дякую за виправлення, ура.

@paxdiablo: так, я думав про це, але я теж не можу придумати будь-яку оболонку unix, яка не використовується :(наприклад, у Java path.separatorзавжди є :* nix).
Йоахім Зауер

5

Що?

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

Як його встановити?

PATH=$PATH:/your/directory
export PATH

Як я можу змусити її залишатися на ПАРТІ кожного разу, коли я відкриваю термінал?

Помістіть попередні два рядки всередину ~/.bash_profile(якщо ви використовуєте bashдля Терміналу).


3

PATH - це змінна середовище для unix-подібних систем.

встановити шлях:

export PATH=$PATH:<your path>

невстановлений шлях:

unset $PATH

встановити шлях назавжди

у своїй домашній папці увімкніть Перегляд -> Показати приховані файли .... перо .bash_profile файл, перед експортом рядка PATH, додайте цей рядок .....

PATH=$PATH:<yourpath>

вийдіть із системи та увійдіть знову ...... перевірити, чи працює його ... ну! це має працювати .....


1
Вибачте за протокол, але це неправильно відформатовано та сформульовано фразою. Намагайтеся уникати надмірного використання жирного, надмірного використання еліпсису ("...") і запишіть повноцінні речення. Це повинно допомогти уникнути таких змін у майбутньому.
Йоахім Зауер

1
@Joachim Sauer Чому ти не редагуєш відповідь? Чому ви вважаєте за краще це знижувати?

1
@MikroDel: оскільки вже є кращі, якісніші відповіді на це запитання, а заборона на участь вимагає менше зусиль. Якби це відповідь єдиний, я, мабуть, її відредагував. Також: хоча вони зазвичай не веселяться, голосові дороги - це законний інструмент (так, поруч із кожним питанням / відповіддю є стрілки вгору та вниз).
Йоахім Зауер

1
відредагуйте або опублікуйте цей коментар майже в один і той же час, але редагуйте, щоб покращити його та допомогти Shantanu Banerjee та іншим користувачам

@MikroDel: тож пояснення міркувань за анонімним запитом не допомагає користувачеві? Я думаю, що я досить чітко зрозумів свої міркування і дав практичні поради щодо підвищення якості. Єдине, на що ви наполягаєте, - це зменшити мою готовність пояснити свої голоси (і як ви бачите в моєму профілі, я не виступаю надмірно).
Йоахім Зауер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.