Що таке PATH та інші змінні середовища, і як я можу їх встановити чи використовувати?


341

Питання про

  • встановлення змінних середовища
  • то PATH

тут дуже поширені, і в більшості випадків відповіді дуже схожі між собою. Надалі було б непогано мати для цього хороший Q / A.

Отже, питання полягає в тому, що таке змінні середовища, як виконуваний файл PATH, і як я можу їх змінити та використовувати в основних операційних системах?

Хороша відповідь міститиме просте пояснення того, що змінні середовища та особливо PATHозначають для ОС, а також прості вказівки щодо їх встановлення та читання відповідно.


2
Втомившись робити це вручну кожен раз, коли мені потрібно, я написав деякі записи реєстру, щоб додати записи контекстного меню для AddToPath та RemoveFromPath до папок, використовуючи безкоштовний додаток, який називається pathed.exe. Далі йде посилання на повний посібник: addictivetips.com/windows-tips/… Тепер я дуже легко можу додати папки до змінної PATH або видалити їх з неї, не потребуючи редагування жодного файлу і не турбуватися про те, щоб зіпсувати форматування змінної. . Сподіваюся, це допомагає. =)
Haroon Q. Raja

1
У Windows є ярлик для відкриття властивостей System, тобто. Панель управління -> Система Це клавіша WIN на клавіатурі + Пауза / Перерва (WIN + Перерва). Це надзвичайно корисно та прискорить процес встановлення нових змінних навколишнього середовища на Win8, оскільки там вам доведеться клацати через кілька вікон у сучасному інтерфейсі (так. Якщо це сучасне, то я вирощую кактус на долоні), що просто дратує. Звичайно, ви можете створити скрипт powershell або скористатися командою setx і більше не хвилюватися з цього приводу: D
termil0r

У Windows 8 найшвидша навігація до змінних системних та змінних середовищ користувача використовує пошук. <kbd> Win </kbd> + <kbd> W </kbd> приводить до пошуку всіх налаштувань. envПерелічено пошук та потрібні варіанти.
FRIdSUN

Я думаю, що це швидше і зрозуміліше, відкриваючи CMDі друкуючи set, або PowerShellвводячи текст Get-Childitem env:.
парадороїд

Якщо ви багато редагуєте змінну шляху (наприклад, під час налаштування нової системи), може допомогти ярлик до діалогового вікна "Властивості системи" на робочому столі. Для цього клацніть правою кнопкою миші на робочому столі, виберіть команду Новий ярлик і введіть systempropertiesadvanced.exe. Потім ви можете натиснути на посилання, щоб перейти до діалогового вікна "Властивості системи", а потім натиснути на "Змінні середовища", щоб перейти до діалогового вікна з налаштуваннями шляху.
Брайан Бернс

Відповіді:


334

Що таке змінні середовища?

Змінні середовища містять значення, пов'язані з поточним середовищем, як-от Операційна система або сеанси користувача.

Шлях

Один з найвідоміших називається PATHв Windows, Linux та Mac OS X. Він визначає каталоги, в яких виконуються програми *, розташовані на машині, які можна запустити, не знаючи і не ввівши весь шлях до файлу в командному рядку . (Або в Windows, в Run діалогу в меню Пуск або Win+ R).

В Linux та Mac OS X зазвичай зберігаються всі binта sbinкаталоги, актуальні для поточного користувача. У Windows він містить принаймні каталоги C:\Windowsта C:\Windows\system32каталоги - тому ви можете запускати calc.exe або notepad.exeз командного рядка або діалогового вікна Запуск , але ні firefox.exe. (Firefox розташований у C:\Program Files\Mozilla Firefox. Для отримання інформації про те, як включити Firefox, перейдіть сюди .)

Наприклад, введення calc( .exe можна пропустити) в командному рядку в Windows запустить калькулятор Windows.

* Ви можете додати підтримку розширень файлів, крім .exeредагування %PATHEXT%.

Інший

Інші змінні можуть вказати програмам, який тип терміналу використовується ( TERMв Linux / Mac OS X), або в Windows, де знаходиться папка Windows (наприклад, %WINDIR%є C:\Windows).

Створення нових змінних середовища

У Windows, Linux та Unix можна створити нові змінні середовища, значення яких потім стануть доступними для всіх програм після запуску.

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

 

Windows

GUI

  1. Відкрити Control Panel » System » Advanced » Environment Variables.

  2. Введіть control sysdm.cpl,,3діалогове вікно Запуск ( Win+ R) та натисніть Environment Variables.
    Для редагування змінних користувачів ви також можете ввести

    %windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
    

    у діалоговому вікні «Виконати».

  3. Клацніть правою кнопкою миші (Мій) Комп'ютер і натисніть кнопку Властивості або просто натисніть Win+ Break.

    • У XP натисніть на Advanced » Environment Variables.
    • У Vista + натисніть на Advanced system settings » Environment Variables.
  4. Існує багато інших способів досягти того самого місця, як, наприклад, ввівши "змінні середовища" у вікні пошуку меню "Пуск" / "Екран" тощо.

Змінні середовища в Windows розділені на значення користувача та машини / системи. Ви можете переглянути та відредагувати їхні значення там. Їх поточні значення після запуску стають доступними для всіх програм.

Існує також швидкий редактор середовища , який допомагає встановлювати та змінювати змінні середовища в Windows без необхідності заглиблюватися в системні налаштування. Ще одна програма з відкритим кодом для Windows, з якою середовище шляху можна редагувати дуже зручно, - це редактор Path .

Командний рядок

Формат

Змінні середовища в Windows позначаються знаками відсотків (%) навколо імені:

%name%

відлуння

Щоб відобразити значення змінної середовища cmd.exe, введіть echo %name%.

C:\>echo %USERPROFILE%
C:\Users\Daniel

набір

Щоб створити / встановити змінну, використовуйте set varname=value:

C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures

C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2

Щоб додати / додати змінну, використовуйте set varname=value;%varname%:

C:\>set Penguins=C:\Linux

C:\>set Penguins=C:\Windows;%Penguins%

C:\>echo %Penguins%
C:\Windows;C:\Linux

Змінені середовища, встановлені таким чином, доступні протягом (решти) тривалості процесу командного рядка, в якому вони встановлені, і доступні для процесів, які починаються після встановлення змінних.

setx

Щоб створити / встановити змінну постійно , використовуйте setx varname "value":

C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"

[Restart CMD]

C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures

На відміну від setзнака рівності немає, і значення має бути укладено у лапки, якщо воно містить пробіли. Зауважте, що змінні можуть розширюватися до рядка з пробілами (наприклад, %PATH%стає C:\Program Files), тому найкраще включати лапки навколо значень, що містять будь-які змінні.

Ви повинні додавати вручну setxдо версій Windows раніше, ніж Vista.
Інструменти підтримки Windows XP Service Pack 2

Список змінних середовищ Windows

Ось перелік змінних середовища за замовчуванням , які вбудовані в Windows. Ось деякі приклади: %WINDIR%, %SystemRoot%, %USERPROFILE%, і %APPDATA%. Як і більшість імен у Windows, вони нечутливі до регістру.

 

Похідні Unix (FreeBSD, GNU / Linux, OS X)

Змінні середовища в Linux мають префікс зі знаком долара ($), таким як $ HOME або $ HOSTNAME. Багато відомих і стандартних змінних викладені великими літерами для позначення саме цього. Майте на увазі, що імена змінних залежать від регістру, тобто $ User та $ USER абсолютно не пов'язані з точки зору оболонки.

Похідні Unix визначають загальносистемні змінні в сценаріях оболонки , розташованих в основному в /etcпапці, але значення певного користувача може бути передано цими змінними в сценарії , розташованих в домашній папці (наприклад, /etc/profile, $HOME/.bash_profile). .profileФайл в домашній папці є загальним місцем для визначення користувача змінних.

Встановлення змінних

Ці файли є звичайними скриптами оболонки і можуть містити більше, ніж просто декларації змінної середовища. Щоб встановити змінну середовища, використовуйте export. Щоб показати поточні визначені змінні середовища в терміналі, запустіть env.

exportКоманда є стандартним способом для визначення змінних. Синтаксис дуже інтуїтивний. Результат для цих двох рядків ідентичний, але перша альтернатива є кращою у разі необхідності переносимості до оболонки до POSIX Bourne.

var=value; export var
export var=value

Оболонка С та її нащадки використовують зовсім інший синтаксис; там команда є setenv.

Дивіться проект документації Linux, Path HOWTO для більш ретельного обговорення цієї теми.

Можливо, всупереч поширеній думці, OS X є більш "Unix", ніж Linux. Додатково до вже згадуваних файлів, $ PATH може бути змінено в цих файлах:

  • /etc/pathsмістить усі каталоги за замовчуванням, які додаються до шляху, як /binі /usr/sbin.
  • Будь-який файл в /etc/paths.d- зазвичай використовується установниками для надання виконуваних файлів, які вони надають, з оболонки, не торкаючись конфігураційних файлів для загальної системи або конкретних користувачів. Ці файли просто містять один шлях на рядок. наприклад, / Програми / Mozilla / Календар / смітник.

 

Зовнішні посилання:

Змінні середовища в XP
XP Інструменти підтримки (включає в себе setx)
Змінні середовища в Windows Vista та Windows 7
Додавання виконуваних файлів у діалогове вікно Запуск
Mac OSX Поради - Налаштування змінних середовищ
TLDP: Шлях


10
У Windows Vista далі ви можете SETXвносити постійні зміни. Він має дещо інший синтаксис. SETXпотрібно додати з Windows Server 2003 Resource Kitпопередніх версій NT.
парадороїд

1
@paradroid Ніцца, не знав цього (не користувач Windows). Ця тема - вікі спільноти, ви можете продовжувати та просто редагувати цю інформацію.
Даніель Бек

2
@JdeBP Заголовок розділу мав на меті вказати, як встановити ці значення в користувальницькому інтерфейсі , який називається оболонкою в Windows, на відміну від наступного розділу, інтерфейсу командного рядка . Я редагував це, перш ніж я навіть побачив ваш коментар 10 годин тому. Ніхто ніколи не згадував, що це стосується лише Провідника.
Даніель Бек

1
@JdeBP Відповідь, з якою ви пов’язали, насправді не застосовується в цьому випадку, оскільки ви говорили про встановлення значень у реєстрі. Якщо встановити діалогове вікно, ви отримаєте трансляцію, яку WM_SETTINGCHANGEя собі уявляю, а тому повідомлять зацікавлених сторін про нові значення. Ось чому я запитав, як це тут застосовується. Створення чогось жирного тексту не змінює його значення і не полегшує розуміння, як повторення одного і того ж речення, лише голосніше. Крім того, я редагував цю публікацію кілька годин тому, щоб конкретно зазначити, що значення, які отримують процеси, встановлюються під час їх запуску.
Даніель Бек

3
@JdeBP Ви також можете помітити, що питання має досить основний характер. Ретельне пояснення тонкощів розподілу змін змінних довкілля (серйозно WM_SETTINGCHANGE? API API? Це не аудиторія цього питання!) Не може бути гарною ідеєю, оскільки це може заплутати читача замість пояснення, про що ці змінні .
Даніель Бек

64

Цей пост є з більш технічної точки зору, ніж Даніель, але не пояснює настільки понять.


Стаття у Вікіпедії також є чудовим посиланням.

Linux та більшість BSD

У більшості оболонок командного рядка тимчасові змінні середовища встановлюються за допомогою команд export(sh, bash, zsh) або setenv(csh, tcsh).

  • Приклади випереджаючи , $HOME/binщоб $PATHв ударі або Zsh:

    export PATH="$HOME/bin:$PATH"
    

    (У цьому конкретному випадку exportце зайве, оскільки PATHвоно вже є частиною навколишнього середовища.)

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

Стійкі змінні середовища можуть бути встановлені протягом декількох окремих етапів:

  • Вхід:

    • Налаштування сеансу входу: Linux pam_env, який зазвичай читається з/etc/environment

    • Вхід до терміналу: файли "профілю" оболонки.

      • bashвикористовує /etc/profileі перші один з: ~/.bash_profile, ~/.bash_login, ~/.profile. Керівництво сторінка bash(1)розділу Покликання .

        Часто файл профілю користувача включає також явний виклик ~/.bashrc.

      • zsh: Керівництво сторінка zsh(1)розділу Запуск / вимикання файлів .

      • csh та інші оболонки: Дивіться відповідні сторінки керівництва.

    • Графічні входи: Не впевнені; може відрізнятися залежно від менеджера входу. Здається, GDM читає ~/.profileв моїй системі.

  • Відкриття вікна терміналу:

    • bashвикористовує /etc/bash.bashrcі ~/.bashrc.

Серія Windows NT

  • У командному рядку ( cmd.exe) використовуйте set name=valueдля зміни змінних середовища для цього вікна.

    Для додавання c:\binдо %PATH%використовуйте:

    set path=%path%;c:\bin
    

    Це впливає лише на цей cmd.exeпроцес та будь-які нові процеси, запущені з нього.

  • Щоб внести постійні зміни, використовуйте Панель управління → Система → Додатково → Змінні середовища . ( документи )

    Примітка. Хоча налаштування користувачів зазвичай перевершують системні, PATHзмінна обробляється спеціально: і системні, і налаштування користувача об'єднуються в кінцеве значення.

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

  • Загальносистемні змінні середовища зберігаються в Реєстрі HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentта завантажуються під час завантаження системи.

    Користувацьке середовище зберігається HKCU\Environmentта завантажується під час входу користувача.

  • За замовчуванням система також шукає setкоманди у AUTOEXEC.NTфайлі.

MS-DOS, 16-бітна Windows, серія Windows 9x

  • У MS-DOS Prompt ( command.com) використовуйте set name=value, як і в WinNT.

    Аналогічно, setінтерактивний запуск впливає лише на один command.comпримірник, а також на будь-які нові процеси, запущені з нього.

  • Щоб внести постійні зміни, додайте або відредагуйте відповідні setрядки в C:\AUTOEXEC.BAT, а потім перезавантажте.

    • Щоб уникнути перезавантаження, для Windows 9x: відкрийте вікно підказки MS-DOS, встановіть відповідні змінні, закрийте існуючий процес Провідника ( Пуск → Завершення роботи →, утримуючи Ctrl + Shift, натисніть Скасувати ), запустіть explorer.exeз вікна підказок MS-DOS .

VMS

(Не втримався.)

DCL не має поняття "шлях", але можуть бути введені різні визначення символів та команд SYS$LOGIN:LOGIN.COM.


2
Розділ VMS невірний. DCL має DCL$PATH" автоматичні іноземні команди ".
JdeBP

9

Для bashоболонки PATHглобальної (нетермінал) змінні оточення, я дотримуватися угоди , який використовується в моїй установці Ubuntu VM - інші оболонки буде змінюватися:

Caveat: вся послідовність запуску оболонки, які .bashrcі .profileт. Д. Файли розміщуються в якому порядку ?, коли мені потрібно повторно ввійти, щоб отримати видимість для нових визначених змінних, псевдонімів тощо ?, яка різниця між логіном , інтерактивна та неінтерактивна оболонка - я використовую cron? І чому коли я роблю a . ~/.bashrc, моя дурна PATHзмінна збільшується довше і довше? - це ключові питання, які приходять мені в голову, коли я думаю про свою PATHзмінну.

Насправді я просто повністю переписав весь набір файлів запуску файлів bash, беручи ідеї з файлів скелетів Ubuntu та cygwin, і ось кілька моїх сайтів:

  1. Експорт PATHзмінних та інших глобальних змінних середовищ (тобто LD_LIBRARY_PATH) змінних у .profile;
  2. Використовуйте логіку ~/.profileдля джерела, $HOME/.bashrcякщо вона існує;
  3. Виконання паркану ~/.bashrcз тестом на інтерактивне виконання, вихід іншим способом;
  4. Поставте всі псевдоніми, shoptналаштування підказок, контроль історії, налаштування терміналу, визначення функції тощо (інтерактивна установка) у тій частині, ~/.bashrcяка захищена та працює лише в інтерактивному режимі;
  5. Позбавтеся від інших файлів запуску bash, оскільки їхнє існування визначає, чи керує шлях керування .profileі .bashrcпрацює, як очікувалося. Тобто, якщо немає конкретних вимог, щоб зробити інше, видаліть ~/.bash_profile& ~/.bash_login;
  6. Коли я знаходжуся в підказці bash, і мені потрібно оновити налаштування за замовчуванням, я редагую свій ~/.bashrcфайл, а потім просто надсилаю його за допомогою а, . ~/.bashrcщоб отримати ці зміни в моїй поточній оболонці.
  7. Коли я вношу зміну змінної середовища на зразок PATH, мені потрібно змінити та джерело свого ~/.profile;
  8. Я звертаюсь до своїх дзвінків, щоб переглядати конкретні налаштування .profile.

Це мої 2 копійки на цю тему.


7

Питання: ЩО таке змінні середовища?

Відповідь: Змінні середовища схожі на змінні в будь-якій мові програмування. Що стосується систем Windows або Unix, вони зберігають різні значення, щоб програма та завдання могли отримати необхідну інформацію про ОС або "Навколишнє середовище". Наприклад:

USERPROFILE: каталог користувачів у файлах ОС.

ПОЧТА: де можна знайти пошту користувача у файлах ОС.

Питання: ЩО конкретно є змінна PATH?

A: Змінна PATH встановлює шляхи до каталогу, які слід шукати, коли виконуються команди, як для команд RUN, так і для внутрішніх викликів програм. Це заважає програмі не знати місця її встановлення для виклику інших виконуваних процесів.

Він переглядає змінну PATH для системи оточення Windows і перевіряє кожне місце для даного виконуваного файлу. Таким чином, додавання місця до змінної PATH дозволяє безпосередньо викликати виконуваний файл.

Відповідно до цієї статті у Вікіпедії :

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


З: ЯК додати місце до змінної PATH?

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

Один із способів зробити це описаний тут :

  1. Відкрийте меню "Пуск" і клацніть правою кнопкою миші на "Комп'ютер". Виберіть Властивості.
  2. Виберіть Додаткові параметри системи.
  3. На вкладці Додатково виберіть Змінні середовища.
  4. Оберіть РЕДАКТУВАТИ або НОВО. (для PATH ви, швидше за все, хочете редагувати).
  5. Додайте шлях до свого місцезнаходження. наприклад:C:\wamp\bin\php\php5.5.12;

Я сподіваюся, що це прояснює деяку плутанину.

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