Учебное пособие по переменным среды Bash

Обзор

Всякий раз, когда мы разговариваем с удаленным сервером или делаем что-либо в оболочке, оболочка сохраняет данные в виде переменных, которые она хранит в области, которая называется средой . Среду оболочки можно определить как область хранения, которую оболочка компилирует каждый раз при запуске нового сеанса оболочки. Это сделано для того, чтобы среда содержала все локальные или глобальные переменные, которые мы определили с момента ее последнего запуска. Мы узнаем, какие локальные и глобальные переменные находятся в следующем разделе.

Типы переменных среды

В среде Bash есть два типа переменных среды, которые могут быть определены пользователем для использования в сценариях или программах оболочки, которые они пишут:

  1. Глобальные переменные
  2. Локальные переменные

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

Создание переменных

И локальные, и глобальные переменные чувствительны к регистру и обычно пишутся с большой буквы. Согласно соглашению, локальные переменные должны храниться в нижнем регистре, а глобальные — в верхнем регистре. Хотя это всего лишь соглашение, и вы можете оставить любое имя как для локальных, так и для глобальных переменных. Имя переменной не может начинаться с числа и должно содержать только символы в начале.

Давайте попробуем создать недопустимую переменную на примере:

export 1var = 23

Вот что мы получаем с помощью этой команды:

Создание недопустимой переменной

Ниже показано общее практическое правило для создания переменных:

VARIABLE_NAME=»value»

Обратите внимание, что НЕ помещайте пробелы вокруг символа равенства, это вызовет ошибки. Кроме того, рекомендуется заключать в кавычки строковые значения, которые мы определяем для переменной, чтобы уменьшить вероятность ошибок. Давайте попробуем определить переменную и распечатать ее в оболочке:

website = «linuxhint»
echo $ website

Вот что мы получаем с помощью этой команды:

Переменная печати

Обратите внимание, что переменная, которую мы определили в оболочке выше, является локальной переменной, и эта переменная будет удалена, как только мы перезапустим оболочку. Чтобы убедиться в этом, перезапустите оболочку и попробуйте снова напечатать переменную:

Локальная переменная теряется при перезапуске оболочки

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

Чтобы преобразовать локальную переменную, которую мы определили выше, в глобальную переменную, мы можем экспортировать переменную, добавив ее в файл .bashrc , чтобы он был доступен даже при перезапуске оболочки. Отредактируйте файл .bashrc с помощью этой команды :

nano ~/.bashrc

Теперь мы отредактируем файл и добавим в конец следующий контент:

# Установка переменных среды
export WEBSITE = ‘LinuxHint’

После добавления содержимого сохраните и закройте файл. Если теперь мы попытаемся распечатать переменную, она все равно не будет существовать. Это связано с тем, что нам нужно перезагрузить файл в память с помощью следующей команды:

source ~ /.bashrc

Как только это будет сделано, переменная будет напечатана (даже после перезапуска):

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

Зарезервированные переменные

Резерв Bash d переменных

Зарезервированные переменные в Bash — это те, которые предварительно определены в оболочке. Мы можем использовать их, не определяя их, например:

Печать зарезервированных переменных

В BASH есть полный список переменных, например:

auto_resume Управляет тем, как оболочка взаимодействует с пользователем и элементом управления заданиями.
BASH Предоставляет полную путь, который используется для выполнения текущего сеанса Bash
BASH_ENV Значение этой переменной раскрывается и используется как имя файл запуска перед выполнением сценария
BASH_VERSION Предоставляет номер версии текущего экземпляра оболочки Bash
BASH_VERSINFO Предоставляет информацию о версии текущего экземпляра оболочки Bash
COLUMNS Используется плагинами для определения ширины терминала при печати списков выбора.
COMP_CWORD Предоставляет текущую позицию курсора на th оболочка
COMP_LINE Предоставляет текущий номер строки в оболочке
COMP_POINT Предоставляет индекс текущей позиции курсора относительно начала текущей команды
COMP_WORDS Массив, который предоставляет список уникальных слов в командной строке
COMPREPLY Массив строковых значений, с помощью которых Bash обеспечивает функцию автозаполнения
DIRSTACK Массив строковых значений, содержащий содержимое текущего стека каталогов
EUID Предоставляет идентификатор текущего пользователя
FCEDIT Редактор, используемый по умолчанию параметром -e встроенной команды fc.
FIGNORE Список суффиксов, разделенных двоеточиями. Строковые значения, которые необходимо игнорировать при выполнении автозавершения имени файла в командной строке.
FUNCNAME Возвращает имя выполняемой функции оболочки
GLOBIGNORE Список суффиксов, разделенных двоеточиями. Шаблоны строк, которые необходимо игнорировать при раскрытии имени файла
ГРУППЫ Определяет список групп, членом которых является текущий пользователь
HISTCMD Индекс в списке истории текущей команды
HISTCONTROL Определяет, добавлена ​​ли команда в файл истории
HISTFILE Предоставляет имя файла, в котором хранится история команд. Значение по умолчанию — ~/.bash_history.
HISTFILESIZE Определяет максимальное количество строк, хранящихся в файле истории
HISTIGNORE Шаблон, разделенный двоеточиями. Строки, используемые для определения того, какие командные строки должны храниться в файле истории
HISTSIZE Определяет максимальное количество команд для сохранения в списке истории
HOSTFILE Содержит имя файла в том же формате, что и/etc/hosts, который должен быть прочитан, когда оболочке необходимо заполнить имя хоста
HOSTNAME Предоставляет имя текущего хоста
HOSTTYPE Предоставляет имя машины, на которой запущен Bash
IGNOREEOF Решите, что делать, когда команда получает только ввод EOF
INPUTRC Предоставляет имя файла инициализации Readline, по умолчанию/etc/inputrc
LANG Определить локаль ca тегория не выбрана с переменной, начинающейся с LC_.
LC_ALL Переопределяет значение LANG и значений LC_, определяющих категорию локали
LC_CTYPE Определяет, как символы и классы символов интерпретируются при раскрытии имени файла и сопоставлении с образцом
LC_MESSAGES Предоставляет данные локали, используемые для перевода строк в двойных кавычках, которым предшествует символ «$».
LC_NUMERIC Предоставляет категорию локали, используемую для форматирования чисел
LINENO Предоставляет номер строки сценария или функции оболочки, выполняемой в данный момент
MACHTYPE Строка, полностью описывающая тип системы, на которой выполняется Bash, в стандартном формате GNU CPU-COMPANY-SYSTEM
OLDPWD Предыдущий рабочий каталог, установленный командой cd
OPTERR Если установлено значение 1, Bash отображает сообщения об ошибках, сгенерированные встроенным getopts
OSTYPE Описывает ОС Bash, на которой работает
PIPESTATUS Переменная массива, содержащая список значений статуса выхода из процессов в последнем запущенном конвейере переднего плана
POSIXLY_CORRECT Если эта переменная установлена, оболочка перейдет в режим POSIX при запуске
PPID Определенный идентификатор процесса t родительский процесс оболочки
PROMPT_COMMAND Если установлено, значение интерпретируется как команда для выполнения перед печатью каждого основного приглашение (PS1).
PS3 Значение этой переменной используется в качестве приглашения для команды выбора. По умолчанию «‘ #? ‘”
PS4 Значение — это приглашение, напечатанное перед выводом командной строки, когда установлена ​​опция -x; по умолчанию «+».
PWD Определяет текущий рабочий каталог
RANDOM При каждом обращении к этому параметру генерируется случайное целое число от 0 до 32767. Присвоение значения этой переменной запускает генератор случайных чисел.
REPLY Переменная по умолчанию для встроенного чтения
SECONDS Определяет текущий срок службы оболочки в секундах
ОБОЛОЧКИ Список параметров оболочки, которые в данный момент включены
SHLVL Количество текущих активные оболочки Bash
TIMEFORMAT Формат даты, отображаемой в оболочке
UID User ID текущего активного пользователя оболочки

Попробуйте распечатать эти переменные, чтобы увидеть, как они работают, точно так же, как мы делали это в начале.

Зарезервированные переменные Bourne Shell

Как и параметры оболочки Bash, которые мы предоставили выше, оболочка Bourne также имеет несколько зарезервированных переменных. Вот простые переменные оболочки, которые определяет оболочка:

CDPATH Список разделенных двоеточиями каталоги, используемые в качестве пути поиска для встроенной команды cd.
HOME Домашний каталог текущего пользователя; по умолчанию для встроенного компакт-диска. Значение этой переменной также используется тильдой..
IFS Список символов, разделяющих поля; используется, когда оболочка разделяет слова как часть раскрытия
MAIL Если для этого параметра задано имя файла и MAILPATH переменная не установлена, Bash информирует пользователя о прибытии почты в указанный файл.
MAILPATH Двоеточие- разделенный список имен файлов, который оболочка периодически проверяет на наличие новой почты.
OPTARG Значение последнего обработанного аргумента параметра командой getopts
OPTIND Индекс последнего аргумента параметра, обработанного команда getopts
PATH Список каталогов, разделенных двоеточиями, в которых оболочка ищет команды.
PS1 Определяет первую строку приглашения со значением по умолчанию «’ s- v $ ‘”.
PS2 Определяет дополнительную строку приглашения со значением по умолчанию«’> ‘»

Специальные параметры

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

$ * Расширяется до позиционных параметров, начиная с единицы. Когда раскрытие происходит в двойных кавычках, оно заменяется одним словом со значением каждого параметра, разделенным первым символом специальной переменной IFS.
[ email protected] Предоставляет позиционные параметры, начиная с единицы. Когда раскрытие происходит в двойных кавычках, каждый параметр заменяется отдельным словом.
$ # Предоставляет количество позиционных параметры в десятичном формате.
$? Предоставляет статус выхода последнего выполненного конвейера переднего плана.
$ — Знак дефиса указывает текущие флаги параметров, указанные при вызове встроенной командой set или заданные сама оболочка (например, -i)
$$ Предоставляет текущий идентификатор процесса оболочки
$! Предоставляет текущий идентификатор процесса последней выполненной фоновой команды
$ 0 Предоставляет имя текущей оболочки или сценария оболочки

Давайте попробуем пример позиционных параметров:

echo «$ 1 — это 1-й позиционный параметр.»
echo «$ 2 — это 2-й позиционный параметр.»
echo «$ 3 — третий позиционный параметр . «
echo
echo» Общее количество позиционных параметров составляет $ #. «

Когда мы запускаем эту команду с некоторыми параметрами, мы можем видеть следующий вывод:

Распечатать позиционные параметры

Заключение

В этом уроке мы рассмотрели, как мы можем определять и использовать переменные в Среда Bash и что такое зарезервированные переменные в оболочке.

Оцените статью
nanomode.ru
Добавить комментарий