Поиск по сайту:

Другим прощай часто, себе — никогда (Пубилий).

Экспорт переменных Bash

5 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...
12 февраля 2021
Bash Heredoc
Понимание переменных в оболочке Bash необходимо для профессиональной работы с Linux. Это одно из ключевых требований для программирования, а также для достижения уровня 1 сертификации профессионального института Linux (LPIC).

В этой статье мы объясним, как объявлять переменные в Bash таким образом, чтобы вы могли использовать их в других средах в вашей системе Linux, и какие соответствующие побочные эффекты вы должны учитывать.

 

Краткое описание Bash

Оболочка Bash была впервые выпущена в 1989 году и использовалась в качестве оболочки входа по умолчанию для большинства дистрибутивов Linux. Брайан Фокс написал Bash как оболочку UNIX и командный язык для проекта GNU в качестве бесплатной замены оболочки Bourne. Это аббревиатура от Bourne Again Shell. Bash в значительной степени совместим с sh и включает в себя полезные функции из оболочки Korn ksh и оболочки C csh.

В то время как операционная система GNU предоставляет другие оболочки, включая версию csh, Bash является интерактивной оболочкой по умолчанию. Он разработан с учетом переносимости и в настоящее время работает почти во всех версиях UNIX и других операционных системах.

 

Вкратце о переменных Bash

Переменные – важные компоненты языков программирования. На них ссылаются и ими манипулируют в компьютерной программе. Проще говоря, переменные представляют собой именованные ячейки памяти. В Bash это то же самое, что и в любом языке программирования. Это позволяет нам, людям и пользователям компьютера, сохранять значения в «мозгу» компьютера и снова находить их по присвоенному имени переменной.

Термин «переменная» относится к комбинированной форме двух слов, т. е. «Варьировать + способно», что означает, что ее значение можно изменять и использовать многократно. В отличие от этого переменные, которые нельзя изменить, называются константами.

Пока для вашего сценария достаточно памяти, вы можете свободно создавать и использовать переменные. Вы можете просто установить их, указав имя переменной, а затем присвоив ей значение. Имя переменной в Bash может включать буквы, цифры и символы подчеркивания. Его имя может начинаться только с буквы и символа подчеркивания. Допустимые имена переменных: size, tax5 и _tax20, но не 5rules.

Читать  Как включить TCP BBR для увеличения скорости сети/интернета на сервере Linux

Значение переменной в Bash может содержать число, один символ, строку символов или список элементов (называемый массивом). У него нет видимого типа данных, и внутренний тип данных переменной будет автоматически вычисляться (или производиться) после присвоения значения. Кроме того, нет необходимости объявлять переменную – присвоение значения ее ссылке автоматически создаст переменную. В приведенном ниже примере сценария Bash это демонстрируется для присвоения строки и присвоения числового номера.

#! /bin/bash


welcomeMessage="Привет мир!"

echo $welcomeMessage


price=145

echo $price

Соглашения об именах переменных Bash

Нет фиксированных правил написания имен переменных, только условные обозначения. Используются следующие условные обозначения:

  • Имена в нижнем регистре – переменные, локальные для скрипта или функции.
    Неважно, пишется ли он в нижнем регистре/регистр змеи или в стиле верблюда. В приведенном выше примере используется стиль верблюжьего футляра.
  • Имена в верхнем регистре – константы, переменные среды, встроенные переменные оболочки.
    Имейте в виду, что эти переменные могут уже использоваться другими программами. Примеры: $PATH, $LANG, $PWD, $PS4 и $SHELL.

Для глобальных ИТ-компаний принято работать с руководствами по стилю, чтобы обеспечить единый стиль программирования в компании.

 

Переменная видимость

По умолчанию переменная локально привязана к структуре, функции, сценарию или процессу и не может быть доступна извне. Пример ниже показывает это для переменной $message, принадлежащей сценарию, и $welcome, принадлежащей функции outputWelcomeMessage().

#!/bin/bash


# определите сообщение переменной для скрипта

message=”Привет, еще раз!”


outputWelcomeMessage() {

# определение локальной переменной

welcome=”Привет!”

echo $welcome

}


outputWelcomeMessage()    # напечатать Привет!

echo $message              # напечатать Привет, еще раз!

Чтобы убедиться, что ранее определенная переменная с тем же именем привязана локально, используйте ключевое слово local, как показано ниже. Без ключевого слова local присвоение в строке 8 относилось бы к глобальной переменной с тем же именем, определенным ранее.

#!/bin/bash


# определите сообщение переменной для скрипта

message=”Привет, еще раз!”


outputWelcomeMessage () {

# определение локальной переменной с тем же именем

Local message=”Привет!”

echo $message

}


outputWelcomeMessage ()    # напечатать Привет!

echo $message              # напечатать Привет, еще раз!

Расширение области действия переменной

Чтобы сделать внутреннюю переменную видимой для других дочерних процессов, необходим дополнительный шаг. Этот шаг называется экспортом переменной. Bash предлагает использование ключевого слова export, за которым следует имя переменной. В листинге ниже это показано для переменной backupPath.

$ backupPath=”/opt/backup/”

$ export backupPath

 

Читать  Как указать имя файла с пробелами в Linux

Команда экспорта – это встроенная оболочка, которая используется для определения переменной как той, которую наследуют подоболочки (оболочки, порожденные из оригинала). Таким образом, экспортируемые переменные могут быть прочитаны и записаны более чем одним процессом.

Второй вариант – объявить переменную как переменную среды с самого начала. Вы можете сделать это, используя ключевое слово declare, за которым следует параметр «-x». Эффект аналогичен введенной ранее команде экспорта.

$ 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 и просто отображает все экспортированные переменные в текущей оболочке с помощью команды объявления.

$ export -p

declare -x DESKTOP_SESSION="xfce"

declare -x DISPLAY=":0"

declare -x GLADE_CATALOG_PATH=":"

declare -x GLADE_MODULE_PATH=":"

declare -x GLADE_PIXMAP_PATH=":"

declare -x HOME="/home/frank"

declare -x LANG="de_DE.UTF-8"

 

Параметр -n используется для отключения переменной среды. Приведенный ниже листинг демонстрирует это для ранее определенной переменной BACKUPPATH.

$ export -n BACKUPPATH

Вывод

Bash – очень умная, но иногда и немного сложная среда. Переменные контролируют взаимодействие различных инструментов. Экспорт переменных помогает взаимодействовать между процессами и прост в использовании в повседневной жизни.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться в соц. сетях:
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close