Змінні оточення у Linux. Як додати програму в path linux

Що це таке? Багато команд, які ви вводите в командному рядку, вимагають застосування зовнішньої програми, яка завантажується з файлової системи. Наприклад, такі команди, як mkdir і wc, насправді знаходяться в папці /bin.

Коли ви вводите інструкцію, яку оболонка Bash не розпізнає, вона намагається виконати її як програму та повертає помилку, якщо не знаходить програму з таким ім'ям. І це стосується не тільки основних команд, які ми розглядали, тому що з командного рядкаВи можете запустити будь-яку програму.


Але як за наявності у файловій системі Linux знає, які програми, з яких каталогів запускати? ОС використовує системну змінну оточення для вказівки підмножини папок, у яких слід шукати при отриманні невідомої команди. Ця змінна називається PATH і може бути виведена на екран наступною командою echo (символ $ обов'язковий):

Echo $PATH

Результат виконання цієї команди буде виглядати на зразок наступних семи абсолютних шляхів до папок, розділених двокрапками:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

При кожному введенні невідомої команди Linux переглядатиме кожну з папок, зазначених у змінній оточенні, в порядку їх завдання, намагаючись знайти програму з тим самим ім'ям. Якщо програму знайдено, вона запускається; в іншому випадку виводиться повідомлення про помилку. Але не буде помилкою, якщо ви купите своє улюблене срібні кільця в подарунок. Срібло прикрасить будь-яку жінку!

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

Наприклад, ви завантажили з Інтернету у вашу домашню папку утиліту diary. Якщо ви введете її ім'я в командному рядку, отримайте повідомлення про помилку, тому що вона знаходиться в папці, не включеній до системного шляху. Для виконання цієї програми слід ввести наступний рядок (нагадую, що символ ~ - скорочене позначення вашої домашньої папки):

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

Звичайно передбачається, що diary - проста автономна програма, що не вимагає установки, тому що більшість основних додатків в процесі установки помістять файл програми, що виконується, куди-небудь у ваш заданий шлях. Ось така змінна оточення PATH, користуйтесь на здоров'я!

Змінні оточення ( environment variable) використовуються для зберігання загальних значень змінних у межах різних сценаріїв та програм. Такі змінні можна встановлювати на час, наприклад на період роботи конкретної оболонки терміналу, або на період сесії користувача, або встановити змінну оточення на глобальному рівні - для всієї системи.

Змінні оточення

$HOME
Змінна містить шлях до домашнього каталогу поточного користувача. $USER
Ім'я поточного користувача $PATH
Список каталогів для пошуку оболонкою програм, що виконуються. $PWD
Шлях до поточного робочого каталогу (або pwd). Приклад: dir_path = $ (pwd). $SHELL
Інтерпретатор за промовчанням $RANDOM
Генерує рандомне число 0..32767 при кожному доступі до змінної. $SECONDS
Час у сік. з моменту запуску командної оболонки. $? Результат виконання попередньої команди. $HOSTNAME
Ім'я комп'ютера $HISTFILE
Шлях до файлу історії інтерпретатора $IFS
Список символів-розділювачів команд, параметрів, елементів масиву (за замовчуванням: пробіл, таб, новий рядок) $PS1
Шаблон запрошення інтерпретатора рядка.

Тимчасове встановлення змінної оточення

Встановлення змінної оточення на період сесії:

# Для нового процесу env ім'я_змінної=значення [команда] # Для поточної оболонки та всіх її підпроцесів export ім'я_змінної=значення [команда]

Значення змінної зберігається до перезавантаження системи.

Встановлення постійного значення

Змінні оточення на рівні системи встановлюються через файл /etc/environment:

ENVIRONMENT="dev"

Встановлення змінного оточення для конкретного користувача через файл ~/.bashrc або ~/.bash_profile:

PATH="$(PATH):/home/user/bin:"

Увага!

Файл ~/.bash_profile буде виконано під час запуску інтерпретатора з ключем -l. При локальному вході файл не читається!

Також потрібно пам'ятати, що зміни набудуть чинності лише після перезавантаження сеансу!

Перегляд значення змінної оточення

Для перегляду значення змінної оточення є команда printenv:

Printenv<имя_переменной>

#shell, #bash, #environment

Пакет AIR SDK містить кілька програм, які можна запускати з командного рядка чи вікна терміналу. Запускати ці програми буде набагато зручніше, якщо визначити шлях до каталогу bin SDK за допомогою змінного середовища Path.

У цьому розділі наведено загальний опис процедури налаштування шляху в Windows, Mac і Linux. Однак конфігурації комп'ютерів можуть суттєво відрізнятися, тому ця процедура працює не в усіх системах. У цьому випадку потрібну інформацію можна знайти в документації операційної системи або в Інтернеті.

Налаштування змінного середовища PATH у Linux та Mac OS з використанням оболонки Bash

Коли команда вводиться у вікно терміналу, оболонка (програма, яка зчитує команди, що вводяться і намагається відреагувати відповідним чином) спочатку повинна знайти програму команди у файловій системі. Оболонка виконує пошук команд у списку каталогів, який зберігається у змінному середовищі з ім'ям $PATH. Щоб переглянути поточне значення змінної path, введіть наступну команду:

Echo $PATH

Буде виведено список розділених двокрапкою каталогів приблизно в такому вигляді:

/usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/x11/bin

Шлях до каталогу bin пакету AIR SDK необхідно додати до цього списку, щоб оболонка могла знаходити ADT та інструменти ADT. Припустимо, що AIR SDK знаходиться у каталозі /Users/fred/SDKs/AIR . У цьому випадку для додавання потрібних каталогів до змінного середовища path використовується наступна команда:

Export PATH=$PATH:/Users/fred/SDKs/AIR/bin:/Users/fred/SDKs/android/tools

Примітка. Якщо шлях містить символи пробілів, перед ними слід вставити символ зворотної косої межі, як показано нижче:

/Users/fred\ jones/SDKs/AIR\ 2.5\ SDK/bin

Щоб перевірити результати додавання, можна ще раз виконати команду echo:

Echo $PATH /usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/x11/bin:/Users/fred/SDKs/AIR/bin:/Users/fred/SDKs/android/ tools

Каталоги додані успішно. Тепер ви зможете викликати наступні команди та отримувати коректну відповідь:

Adt-version

Якщо змінне середовище $PATH було змінено правильно, в результаті виконання команди має бути видана версія середовища ADT.

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

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

Процедура додавання команди до сценарію запуску оболонки

    Змініть домашній каталог:

    Створіть профіль конфігурації оболонки (за потреби) і перенаправте текст, що вводиться в кінець файлу, за допомогою команди «cat >> ». Використовуйте відповідний файл для своєї операційної системита оболонки. Наприклад, в Mac OS можна використовувати .bash_profile , а в Ubuntu - .bashrc .

    Cat >> .bash_profile

    Введіть текст, який потрібно додати до файлу:

    Export PATH=$PATH:/Users/cward/SDKs/android/tools:/Users/cward/SDKs/AIR/bin

    Завершіть перенаправлення тексту, натиснувши клавіші CTRL-SHIFT-D на клавіатурі.

    Відобразіть файл, щоб переконатися у правильності виконання операції:

    Cat .bash_profile

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

    Echo $PATH

    Додані елементи мають бути виведені на екрані.

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

Налаштування змінного середовища PATH у Windows

При відкритті командне вікно Windows успадковує глобальні змінні середовища, визначені у властивостях системи. Однією з важливих змінних є змінна path, що містить список каталогів, у яких виконується пошук програми. Щоб переглянути поточний список каталогів у змінній path, у командному вікні можна ввести таку команду:

Set path

Буде виведено список розділених двокрапкою каталогів, який виглядає приблизно так:

Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem

Шлях до каталогу bin пакету AIR SDK необхідно додати до цього списку, щоб програма команд могла знаходити ADT та інструменти ADT. Припустимо, що пакет AIR SDK знаходиться в каталозі C: ​​SDKs AIR . У цьому випадку шлях можна додати так:

    У розділі «Панель керування» відкрийте діалогове вікно «Властивості системи» або клацніть правою кнопкою миші на піктограмі «Мій комп'ютер» і в меню виберіть «Властивості».

    На вкладці «Додатково» натисніть кнопку «Змінні середовища».

    У розділі «Системні змінні» діалогового вікна «Змінні середовища» виберіть пункт «Path».

    Натисніть кнопку «Змінити».

    Перейдіть у кінець рядка у полі «Значення змінної».

    Наприкінці поточного значення введіть наступний текст:

    ;C:\SDKs\AIR\bin

    Натисніть кнопку «OK» у всіх діалогових вікнах, щоб зберегти шлях.

Якщо в цей момент є відкриті командні вікна, зміни для них не застосовані. Відкрийте нове командне вікно та введіть наступну команду, щоб переконатися у правильності налаштування змінного середовища:

Adt-version

Якщо пізнє розташування пакета AIR SDK буде змінено або додано нову версію, змінну середовища path необхідно буде змінити відповідним чином.

Мені цікаво, де новий шлях повинен бути доданий до змінного середовища PATH . Я знаю, що це може бути виконано шляхом редагування.bashrc (наприклад), але неясно, як це зробити.

Таким чином:

Export PATH=~/opt/bin:$PATH

Export PATH=$PATH:~/opt/bin

11 відповідей

Простий матеріал

PATH=$PATH:~/opt/bin PATH=~/opt/bin:$PATH

залежно від того, чи хочете ви додати в кінець код ~/opt/bin (для пошуку по всіх інших каталогах, якщо є програма з тим самим ім'ям у декількох каталогах) або на початок (для пошуку перед іншими каталогами).

Ви можете додати кілька записів одночасно. PATH=$PATH:~/opt/bin:~/opt/node/bin або зміни в порядку впорядкування просто відмінно.

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

Якщо ваш PATH створюється багатьма різними компонентами, ви можете отримати дублікати записів. Див. Як додати шлях до домашньої директорії, який буде виявлено Unix, який команду? і Видаліть повторювані записи $ PATH за допомогою команди awk , щоб уникнути дублювання або видалити їх.

Де поставити

Зверніть увагу, що ~/.bash_rc не читається якоюсь програмою, а ~/.bashrc - це файл конфігурації інтерактивних екземплярів bash. Ви не повинні визначати змінні середовища в ~/.bashrc. Правильне місце для визначення змінних середовища, таких як PATH це ~/.profile (або ~/.bash_profile , якщо вам не подобаються оболонки крім bash). Див. У чому різниця між ними і який я повинен використовувати?

Нотатки про оболонки, відмінні від bash

У bash, ksh і zsh, export - спеціальний синтаксис, і обидва PATH=~/opt/bin:$PATH і export PATH=~/opt/bin:$PATH робити правильні речі навіть. В інших оболонках Bourne /POSIX, таких як тире (який є /bin/sh на багатьох системах), export аналізується як звичайна команда, що має на увазі дві відмінності:

  • ~ аналізується тільки на початку слова, крім призначень (див. Як додати шлях до домашнього каталогу, який буде виявлено Unix, для якого потрібна команда? ;
  • $PATH зовнішні подвійні лапки breaks if PATH містить пробіли або \[*? .

Отже, в оболонках, таких як тире, export PATH=~/opt/bin:$PATH встановлює PATH у літеральний рядок ~/opt/bin/: , за яким слідує значення PATH до першого місця. PATH=~/opt/bin:$PATH (просте призначення) не вимагає лапок і робить все правильно. Якщо ви хочете використовувати export у переносному скрипті, вам потрібно написати export PATH="$HOME/opt/bin:$PATH" або PATH=~/opt/bin:$PATH export PATH (або PATH=$HOME/opt/bin: $PATH export PATH для переносимості навіть оболонки Bourne, яка приймає export var=value і робив розширення тильды).

¹ Це було неправильно в оболонках Bourne (як у реальній оболонці Bourne, а не в сучасних оболонках у стилі POSIX), але ви навряд чи зіткнетеся з такими старими оболонками у наші дні. Суб>

У будь-якому випадку працює, але вони не роблять те саме: елементи PATH перевіряються зліва направо. У першому прикладі виконувані файли~/opt/bin будуть мати пріоритет над встановленими, наприклад, в /usr/bin , що може бути або не бути тим, що ви хочете.

Зокрема, з точки зору безпеки небезпечно додавати шляхи до фронту, тому що, якщо хтось може отримати доступ на запис до вашого ~/opt/bin , вони можуть помістити для наприклад інший ls , який ви, ймовірно, будете використовувати замість /bin/ls , не помітивши. Тепер уявіть собі те саме для ssh або вашого браузера або вибору ... (Те ж саме в три рази помістити на ваш шлях.)

Я заплутався в питанні 2 (оскільки він видалений з питання, оскільки він був пов'язаний з не пов'язаною проблемою):

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

Export PATH=$PATH:~/opt/bin export PATH=$PATH:~/opt/node/bin

Але це тому, що друге призначення як додає ~/opt/node/bin , але й призначений раніше PATH .

Це можливе обхідне рішення:

Export PATH=$PATH:~/opt/bin:~/opt/node/bin

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

Якщо ви скажете

PATH=~/opt/bin

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

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

Export PATH=/opt/bin:/usr/local/bin:/usr/contrib/bin:/bin:/usr/bin:/usr/sbin:/usr/bin/X11 # додаткові елементи для bindir $HOME/local/bin $HOME/bin; do if [-d $bindir]; then PATH=$PATH:$(bindir) fi done

Linux визначає шлях пошуку зі змінною оточення $PATH . Щоб додати каталог /дані /myscripts на початок змінного оточення $PATH , використовуйте таке:

PATH=/data/myscripts:$PATH

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

PATH=$PATH:/data/myscripts

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

  • Якщо всередині скрипта ви експортуєте змінну оточення, вона ефективна в рамках будь-яких програм, що викликаються скриптом. Зверніть увагу, що це не є ефективним у програмі, яка викликала сценарій.
  • Якщо програма, що викликає сценарій, робить це шляхом увімкнення замість виклику, будь-які зміни середовища в скрипті ефективні в програмі, що викликає. Таке включення може бути виконане за допомогою команди dot чи вихідної команди.

$HOME/myscript.sh source $HOME/myscript.sh

Включення в основному включає «скрипт, що викликається» в сценарії «дзвінка». Це схоже на #include у C. Таким чином, він ефективний усередині скрипту або програми виклику. Але, звичайно, це не ефективно для будь-яких програм або скриптів, що викликаються програмою, що викликає. Щоб зробити його ефективним аж до ланцюжка викликів, ви повинні слідувати настроюванню змінного середовища за допомогою команди export.

Як приклад, програма оболонки bash включає вміст файлу.bash_profile по включенню. Отже, розмістіть наступні 2 рядки в.bash_profile:

PATH=$PATH:/data/myscripts export PATH

ефективно поміщає ці 2 рядки коду у програму bash. Таким чином, у bash змінна$ PATH включає $HOME/myscript.sh , і через інструкцію експорту будь-які програми, викликані bash, мають змінену змінну $PATH . І оскільки будь-які програми, які ви запускаєте із запрошення bash, викликаються bash, новий шлях діє для всього, що ви запускаєте із запрошення bash.

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

Протягом деякого часу я зберіг зі мною дві функції pathadd і pathrm, які допомагають додавати елементи в дорогу, не переймаючись дублюванням.

pathadd приймає один аргумент шляху і необов'язковий аргумент after , який, якщо він буде доданий, додасться до PATH, інакше він додасть його.

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

Pathadd() ( newelement=$(1%/) if [ -d "$1" ] && ! echo $PATH | grep -E -q "(^|:)$newelement($|:)" ; then if [ " $2" = "after" ] ; PATH="$PATH:$newelement" else PATH="$newelement:$PATH" fi fi ) pathrm() ( PATH="$(echo $PATH | sed -e "s; \(^\|:\)$(1%/)\(:\|\$\);\1\2;g" -e "s;^:\|:$;;g" -e "s ;::;;:;g")" )

Помістіть їх у будь-який скрипт, який ви хочете змінити середовище PATH, і тепер ви можете зробити.

Pathadd "/foo/bar" pathadd "/baz/bat" after export PATH

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

Pathrm "/baz/bat" pathadd "/baz/bat" export PATH

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

Куленепробивний спосіб додавання /попередньої підготовки

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

Важливим моментом є те, що навіть якщо системні скрипти не використовують це (цікаво, чому) * 1 , куленепробивний спосіб додавання шляху (наприклад, $HOME/bin) до змінного середовища PATH

PATH="$(PATH:+$(PATH):)$HOME/bin"

для додавання (замість PATH="$PATH:$HOME/bin") та

PATH="$HOME/bin$(PATH:+:$(PATH))"

для додавання (замість PATH="$HOME/bin:$PATH")

Це дозволяє уникнути помилкового ведучого/кінцевого двокрапки, коли $PATH спочатку порожній, що може мати небажані побічні ефекти і може стати кошмаром, невловимо знайти (ця відповідь коротко розглядає випадок awk-way).

$(parameter:+word)

Якщо параметр parameter має значення null чи unset, нічого не замінюється, інакше замінюється слово word .

Таким чином, $(PATH:+$(PATH):) розширюється до: 1) нічого, якщо PATH має значення null або unset; 2) $(PATH): , якщо встановлено PATH .

Примітка. Це є для bash.

* 1 Я тільки-но знайшов, що скрипти на зразок devtoolset-6/enable дійсно використовують це, $ cat /opt/rh/devtoolset-6/enable # General environment variables export /bin$(PATH:+:$(PATH)) ...

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

Для мене (в Mac OS X 10.9.5) додавання імені шляху (наприклад, /mypathname) у файл /etc/paths працювало дуже добре.

Перед редагуванням повертається echo $PATH:

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

Після редагування /etc/paths та перезапуску оболонки змінна $PATH додається за допомогою /pathname . Дійсно, echo $PATH повертає:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/mypathname

Сталося так, що /mypathname був доданий до змінної $PATH .

Змінні оточення в Linux – це спеціальні змінні, визначені оболонкою та використовувані програмами під час виконання. Вони можуть визначатися системою та користувачем. Системні змінні оточення Linux визначаються системою та використовуються програмами системного рівня.

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

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

1. Локальні змінні оточення

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

2. Користувальницькі змінні оболонки

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

3. Системні змінні оточення

Ці змінні доступні у всій системі для всіх користувачів. Вони завантажуються під час старту системи із системних файлів конфігурації: /etc/environment, /etc/profile, /etc/profile.d/ /etc/bash.bashrc.

Конфігураційні файли змінних оточення Linux

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

.bashrc

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

.bash_profile

Ці змінні набувають чинності щоразу, коли користувач підключається віддалено по SSH. Якщо цей файл відсутній система буде шукати .bash_login або .profile.

/etc/environment

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

/etc/bash.bashrc

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

/etc/profile

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

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

source имя_файла

Додавання користувацьких та системних змінних оточення до Linux

Тепер, коли ви знаєте небагато теорії, перейдемо до практики. Локальні змінні оточення в Linux можна створювати такими командами:

var=значення
$ export var = значення

Ці змінні будуть доступні лише для поточної термінальної сесії.

Для видалення змінних оточення можна використовувати декілька команд:

1. Використання env

За промовчанням за допомогою env можна переглянути всі встановлені змінні середовища. Але з опцією -i вона дозволяє тимчасово видалити всі змінні оболонки та виконати команду без змінних.

env -i команда

Var – це будь-яка змінна, яку ви хочете передати цій команді.

Така команда запустить оболонку взагалі без змінних оточення:

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

2. Використання unset

Це інший спосіб видалення змінних оточення Linux. Unset видаляє змінну на ім'я до кінця поточної сесії:

unset ім'я_змінної

3. Встановити значення змінної в ""

Це найпростіший спосіб видалення змінних оточення в Linux, встановлюючи порожнє значення змінної ви видаляєте її до кінця поточної сесії.

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

Створення користувацьких та системних змінних оточення

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

1. Встановлюємо та видаляємо локальні змінні в Linux

Давайте створимо локальну змінну VAR і встановимо їй будь-яке значення, потім видалимо її за допомогою unset і переконаємося, що вона видалена:

VAR1="Losst"
$ echo $VAR1
$ unset VAR1
$ echo $VAR1

Інший спосіб створити змінну – команда export. Видалимо її надавши порожнє значення:

export VAR="Losst"
$ echo $VAR
$ VAR =
$ echo $VAR

Тепер створимо змінну VAR2 також задамо їй значення. А потім тимчасово видалимо всі локальні змінні, виконавши env -i. Вона запустить оболонку без будь-яких змінних. Після введення exit усі змінні будуть відновлені.

VAR2="Losst"
$ echo $VAR2
$ env -i bash
$ echo $VAR2

Встановлення та видалення змінних користувачів

Відредагуйте файл.bashrc у вашій домашній директорії, додавши команду export, для експортування потрібної змінної. Потім виконайте команду source, щоб застосувати зміни. Створимо, наприклад, змінну CD:

Додайте такий рядок (o, потім вставити, потім Esc і: wq):

export CD="This is Losst Home"

Тепер залишилося оновити конфігурацію:

source .bashrc
$ echo $CD

Для видалення цієї змінної просто видаліть її.bashrc.

Тепер додамо змінну оточення за допомогою .bash_profile. Ця змінна, як ви вже знаєте, буде доступна тільки при віддаленому вході:

vi .bash_profile

Додати рядок:

export VAR2="This is Losst Home"

І виконайте ці команди, щоб застосувати зміни та перевірити додавання змінної:

source .bash_profile
$ echo $VAR2

Змінна недоступна, оскільки ви створили локальну сесію, тепер підключіться по ssh:

ssh [email protected]
$ echo $VAR2

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

Примітка: Ці змінні доступні завжди, але не всім користувачам.

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

Створимо змінну, доступну для всіх користувачів, у всіх термінальних сесіях, крім віддалених, додаванням її до /etc/bash.profile:

vi /etc/bash.profile

export VAR="This is system-wide variable"

Потім оновлюємо:

source /etc/bash.bashrc

Тепер ця змінна доступна всім користувачам, у всіх терміналах:

echo $VAR
$ sudo su
$ echo $VAR
$ su -
$ echo $VAR

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

export VAR1="Ця система має широку функцію для лише remote sessions"

Оновіть конфігурацію та перевірте доступність змінної, вона буде доступна лише віддалено:

source /etc/profile
$ echo $VAR1

Якщо потрібно додати змінну оточення до Linux, так щоб вона була доступна і віддалено, і для локальних сесій, експортуйте її в /etc/environment:

vi /etc/environment

export VAR12="I am available everywhere"

Перевіряємо:

source /etc/environment
$ echo $VAR12
$ sudo su
$ echo $VAR12
$ exit
$ssh localhost
$ echo $VAR12

mob_info