Змінні середовища Linux: що це та як з ними працювати

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

У цій статті ми розглянемо, що таке змінні середовища, які вони бувають та як із ними працювати.

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

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

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

Типи змінних середовища

У Linux існують три основні типи змінних середовища, і кожен з них виконує свою важливу роль у налаштуванні системи та її гнучкості:

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

Ці змінні доступні всім користувачам системи й застосовуються для конфігурації важливих параметрів. Системними називають такі змінні як SHELL, що вказує тип командного інтерпретатора (наприклад, Bash), або LANG, що задає мову та локалізацію для всієї системи. 

Налаштування системних змінних виконується адміністраторами у файлах /etc/environment чи /etc/profile, що забезпечує їхнє застосування для всіх користувачів системи. 

  • Користувацькі змінні середовища

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

  • Локальні змінні середовища

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

Корисні та найбільш поширені змінні середовища

  • PATH — ця змінна визначає список директорій, у яких система шукає виконувані файли. Наприклад, додаючи директорію /usr/local/bin до PATH, ти дозволяєш системі запускати програми з її каталогу без необхідності вказувати повний шлях до них.
  • HOME — вказує на домашній каталог користувача, де зберігаються всі особисті файли, налаштування та дані, які використовують програми.
  • USER — зберігає ім’я поточного користувача, який увійшов до системи. Програми використовують цю змінну, щоб знати, від імені кого вони працюють.
  • SHELL —  змінна, що визначає, який командний інтерпретатор використовується (наприклад, Bash або Zsh). 
  • LANG — використовується для налаштування мови та локалізації. Наприклад, LANG=en_US.UTF-8 означає, що інтерфейс системи буде англійською мовою з підтримкою кодування UTF-8.
  • LOGNAME — змінна, що зберігає логін користувача, який увійшов в систему. Вона часто використовується програмами для авторизації та перевірки. 
  • PWD — показує у якому каталозі ти зараз працюєш. Ця змінна автоматично оновлюється щоразу, коли ти змінюєш директорію за допомогою команди cd.
  • EDITOR — визначає текстовий редактор, який буде відкриватись за замовчуванням. Наприклад, якщо ти встановиш EDITOR=/usr/bin/nano системні програми будуть використовувати Nano для редагування файлів.

Як працювати зі змінними середовища?

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

  1. Перегляд змінних середовища:

Щоб переглянути та вивести список усіх змінних разом з їх значеннями, скористайся командою:
printenv

Команда env виконує аналогічну функцію. Вона показує всі змінні середовища, які доступні поточній оболонці.

Для перевірки значення конкретної змінної, наприклад, домашнього каталогу, введи:
echo $HOME
Результатом буде відображення шляху до домашнього каталогу користувача.

  1. Фільтрування змінних середовища:

Якщо список змінних надто великий, ти можеш знайти потрібну за допомогою команди grep. Наприклад:
printenv | grep USER
Ця команда виведе всі змінні, що містять «USER» у своїй назві.

  1. Тимчасова зміна змінних середовища:

Для встановлення або редагування змінної середовища на поточній сесії використовується команда export. Наприклад:
export [ІМ'Я_ЗМІННОЇ]=[ЗНАЧЕННЯ_ЗМІННОЇ]
Важливо пам’ятати, що ця команда дозволяє відредагувати змінну лише для поточного сеансу термінала. Якщо закрити термінал, змінна повернеться до свого початкового стану.

  1. Збереження змін для поточного користувача:

Щоб відредагована змінна стала постійною, для поточного користувача, додай її до файлу конфігурації .bashrc (або .bash_profile, якщо використовується Bash):
nano ~/.bashrc
У кінці файлу додай рядок:
export [ІМ'Я_ЗМІННОЇ]=[ЗНАЧЕННЯ_ЗМІННОЇ]
Збережи файл і виконай команду для застосування змін:
source ~/.bashrc

  1. Системне збереження змін:

Якщо потрібно зберегти змінну для всіх користувачів системи, створіть або відредагуйте .sh-файл у директорії /etc/profile.d/. Наприклад, можна створити новий файл зі зрозумілою назвою для вашої змінної:
sudo nano /etc/profile.d/[ім’я_файлу].sh
Додайте до цього файлу рядок із синтаксисом:
export [ІМ'Я_ЗМІННОЇ]=[ЗНАЧЕННЯ_ЗМІННОЇ]
Збережіть файл і закрийте редактор. Щоб зміни набули чинності для всіх користувачів, необхідно перезапустити систему або виконати команду:
source /etc/profile.d/[ім’я_файлу].sh

  1. Видалення змінних середовища:

Щоб видалити змінну в межах поточного сеансу, скористайся командою unset:
unset [ІМ'Я_ЗМІННОЇ]

Для видалення постійної змінної потрібно вручну видалити її з відповідного файлу конфігурації (наприклад, .bashrc) і застосувати зміни командою source або перезапустити систему.

Помилки при роботі зі змінними середовища та як їх уникнути

Конфлікти змінних середовища

Конфлікти виникають, коли одна й та сама змінна налаштована у кількох файлах конфігурації. Це може призвести до непередбачуваної поведінки системи. Наприклад, змінна PATH може бути визначена як у файлі /etc/profile.d/, так і у файлі .bashrc, але з різними значеннями. Щоб уникнути таких ситуацій, завжди перевіряй послідовність завантаження файлів і залишай актуальне значення змінної лише в одному місці.

Синтаксичні помилки

Забуті лапки або зайві пробіли в значенні змінної можуть викликати помилки, які заважатимуть правильній роботі системи. 

Тимчасовість змін, про яку забуваєш

Зміни, внесені за допомогою export, діятимуть лише в межах поточної сесії термінала. Після його закриття ці зміни втрачаються. Щоб зробити зміни постійними, не забувай додавати їх до відповідного конфігураційного файлу, наприклад, ~/.bashrc для користувача або /etc/environment для застосування в усій системі.

Як уникнути помилок?

  • Завжди перевіряй зміни перед їх застосуванням. Використовуй команду echo, щоб переконатися, що змінна має правильне значення перед її застосуванням.
  • Перед редагуванням системних файлів, таких як .bashrc чи /etc/profile.d/, створюй їх резервні копії, щоб мати можливість відновити оригінальні налаштування у разі помилок. Для цього можна скористатися командою cp, яка створить бекап файлу:
    cp ~/.bashrc ~/.bashrc.backup
  • Документуй усі зміни у файлі конфігурації, щоб було легше знаходити причини проблем у майбутньому.

Післяслово

Робота зі змінними середовища в Linux може спочатку здатися складною, але їхнє опанування відкриває широкі можливості для персоналізації та оптимізації системи. Ці інструменти дозволяють автоматизувати рутинні процеси, налаштовувати програми відповідно до індивідуальних потреб і забезпечувати стабільну роботу системи. Не бійся експериментувати та вдосконалювати свої навички. Якщо ти хочеш розширити свої знання про Linux, запрошуємо тебе на наш курс  «Linux. Базовий рівень», де ти зможеш опанувати основи та стати впевненим користувачем цієї потужної операційної системи.

Залишити відповідь

Дякуємо, що поділились