Програмування BASH

Експорт змінних Bash

Експорт змінних Bash
Розуміння змінних в оболонці Bash має важливе значення для професійної роботи з Linux. Це одна з ключових вимог до програмування, а також досягнення рівня сертифікації професійного інституту Linux (LPIC) рівня 1 [2].

Опублікована раніше стаття Фахміди Єсмін [4] дає вам чудове вступ до змінних Баша. Тут ми робимо крок далі і пояснюємо, як оголосити змінні в Bash таким чином, щоб ви могли використовувати їх в інших середовищах вашої системи Linux, і які відповідні побічні ефекти ви повинні врахувати.

Короткий опис Баша

Вперше оболонка Bash була випущена в 1989 році і використовувалася як оболонка входу за замовчуванням для більшості дистрибутивів Linux. Брайан Фокс написав Bash як оболонку UNIX та командну мову для проекту GNU як безкоштовну програму заміни оболонки Bourne. Це скорочення від Bourne Again Shell. Bash значною мірою сумісний з ш і включає корисні функції з оболонки Korn кш і оболонка C csh [6].

Хоча операційна система GNU надає інші оболонки, включаючи версію csh, Bash - це інтерактивна оболонка за замовчуванням. Він розроблений з урахуванням портативності і в даний час працює майже на всіх версіях UNIX та інших операційних системах [9].

Bash змінні в двох словах

Змінні є важливими компонентами мов програмування. На них посилаються та маніпулюють ними в комп’ютерній програмі. Простіше кажучи, змінні представляють іменовані комірки пам'яті. Це те саме в Bash, що і в будь-якій мові програмування. Це дозволяє нам, як людям, так і користувачам комп’ютера, зберігати значення в “мозку” комп’ютера і знаходити їх знову за допомогою призначеного імені змінної.

Термін змінна позначає комбіновану форму двох слів, тобто.e., варіюється + може, що означає, що його значення можна змінювати, і його можна використовувати кілька разів. На відміну від цього, змінні, які неможливо змінити, називаються константами. [10]

Поки для вашого сценарію достатньо пам'яті, ви можете вільно створювати та використовувати змінні. Ви можете просто встановити їх, визначивши ім'я змінної, а потім призначивши її значення. Ім'я змінної в Bash може містити літери, цифри та підкреслення. Його назву можна починати лише з літери та підкреслення. Дійсні імена змінних: size, tax5 та _tax20, але не 5правил.

Значення змінної в Bash може містити число, один символ, рядок символів або список елементів (званий масивом). Він не має видимого типу даних, і внутрішній тип даних змінної буде автоматично визначений (або виведений) після присвоєння значення. Крім того, немає необхідності оголошувати змінну - присвоєння значення її посилання створить змінну автоматично. Наведений нижче приклад скрипта Bash демонструє це для присвоєння рядка та присвоєння числового номера.

#! / bin / bash
welcomeMessage = "Привіт Світ!"
echo $ welcomeMessage
ціна = 145
ехо $ ціна

Конвенції про іменування змінних Баша

Немає фіксованих правил написання імен змінних, є лише домовленості. Використовуються такі конвенції:

Для глобальних ІТ-компаній загальноприйнятою є робота з керівництвом по стилях для забезпечення загального стилю кодування серед компаній. Для отримання додаткової інформації про правила, яких вони дотримуються, див. Редакцію розробника для IBM та Посібник із стилів Google [3].

Змінна видимість

Типовим випадком є ​​те, що змінна локально прив’язана до структури, функції, сценарію або процесу, і неможливо отримати доступ за її межами. У наведеному нижче прикладі показано це для змінної $ message, яка належить сценарію, і $ welcome, яка належить функції outputWelcomeMessage ().

#!/ bin / bash
# визначити повідомлення змінної до сценарію
message = ”Здравствуйте, ще раз!"
outputWelcomeMessage ()
# визначити локальну змінну
Ласкаво просимо = ”Привіт!"
echo $ ласкаво просимо

outputWelcomeMessage () # друкує Привіт!
echo $ message # prints Привіт, ще раз!

Щоб переконатися, що раніше визначена змінна з тим самим іменем є локально пов’язаною, використовуйте ключове слово local, як показано далі. Без ключового слова local присвоєння у рядку 8 відносилося б до глобально визначеної змінної з тим самим іменем, визначеним раніше.

#!/ bin / bash
# визначити повідомлення змінної до сценарію
message = ”Здравствуйте, ще раз!"
outputWelcomeMessage ()
# визначити локальну змінну з тим самим іменем
Місцеве повідомлення = ”Привіт!"
echo $ message

outputWelcomeMessage () # друкує Привіт!
echo $ message # prints Привіт, ще раз!

Розширення області дії змінної

Для того, щоб зробити внутрішню змінну видимою для інших дочірніх процесів, необхідний додатковий крок. Цей етап називається експортом змінної. Bash пропонує використання ключового слова export, за яким слідує ім'я змінної. Список нижче демонструє це для змінної backupPath.

$ backupPath = ”/ opt / backup /”
$ export backupPath

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

Другий варіант - оголосити змінну як змінну середовища з самого початку. Ви можете зробити це, використовуючи ключове слово declare, а потім опцію “-x” (див. [5] для отримання додаткової інформації про команду объявления). Ефект схожий на команду експорту, яка була введена раніше.

$ declare -x BACKUPPATH = ”/ opt / backup /”

Успадковувати від інших сеансів

Коли ви виконуєте програму, вона автоматично успадковує свої змінні середовища від батьківського процесу. Наприклад, якщо для $ HOME для батьків встановлено значення / root, тоді для змінної $ HOME дитини також встановлено значення / root.

Подальші команди

Серед інших, Linux поставляється з корисними командами та опціями, які стосуються змінних. Перші два називаються env та printenv. Вони перелічують усі змінні середовища.

На малюнку нижче показано вихід команди env у терміналі, який запускається в сеансі X. Він містить такі змінні, як $ XTERM (тип терміналу), $ SHELL (програма, яка викликається при вході в систему, і показує / bin / bash для шляху до інтерпретатора Bash), $ LS_COLORS (кольори, які використовуються для виділення іншого файлу типи при виклику ls) та $ DESKTOP_SESSION (поточне середовище робочого столу X).

Третій та четвертий - це опції команди експорту - -p та -n. -p є коротким для print і просто відображає всі експортовані змінні в поточній оболонці за допомогою команди оголосити.

$ експорт -p
оголосити -x DESKTOP_SESSION = "xfce"
оголосити -x DISPLAY = ": 0"
оголосити -x GLADE_CATALOG_PATH = ":"
оголосити -x GLADE_MODULE_PATH = ":"
оголосити -x GLADE_PIXMAP_PATH = ":"
оголосити -x HOME = "/ home / frank"
оголосити -x LANG = "de_DE.UTF-8 "

Параметр -n використовується для скасування змінної середовища. Наведений нижче перелік демонструє це для раніше визначеної змінної BACKUPPATH.

$ export -n BACKUPPATH

Висновок

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

Про авторів

Jacqui Kabeta - еколог, завзятий дослідник, тренер та наставник. У кількох африканських країнах вона працювала в галузі ІТ та НУО.

Френк Хофманн - ІТ-розробник, тренер і автор, і воліє працювати з Берліна, Женеви та Кейптауна. Співавтор книги Debian Package Management, доступної з dpmb.орг

Посилання та посилання

Як зафіксувати та транслювати ігровий сеанс на Linux
Раніше грати в ігри вважалося лише хобі, але з часом ігрова індустрія спостерігала величезний ріст з точки зору технологій та кількості гравців. Аудит...
Найкращі ігри для гри з відстеженням рук
Нещодавно Oculus Quest представив чудову ідею відстеження рук без контролерів. Завдяки постійно зростаючій кількості ігор та заходів, які виконують пі...
Як показати накладання екранного меню в повноекранному додатку та іграх для Linux
Гра у повноекранні ігри або використання додатків у повноекранному повноекранному режимі може відключити від відповідної системної інформації, видимої...