Linux вывести все переменные окружения. Руководство про переменные в среде Linux

Переменные окружения (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

2.2. Переменные среды

Операционная система поддерживает специальный вид ресурсов, называемых переменные среды (environment variables ). Эти переменные представляют собой пару ИМЯ - ЗНАЧЕНИЕ . Имя может начинаться с буквы и состоять из букв, цифр и символов подчеркивания.

Для подстановки значения переменной в командную строку перед именем переменной ставится знак $:

$ echo $USER guest

В случае, если переменная не установлена, возвращается пустая строка.

Для установки значения переменной используется оператор присваивания (в случае Bourne-подобных оболочек):

$ TEST=test

или встроенный оператор set (в случае С-подобных):

$ set TEST=test

Команда set без аргументов выводит список значений всех переменных, установленных в среде:

$ set COLUMNS=197 CVS_RSH=ssh DIRSTACK=() EUID=1000 GROUPS=() G_BROKEN_FILENAMES=1 HISTFILE=/home/guest/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/home/guest HOSTNAME=myhost HOSTTYPE=i686 IFS=$" \t\n" INPUTRC=/etc/inputrc KDEDIR=/usr KDEDIRS=/home/guest/.local/ KDE_IS_PRELINKED=1 KDE_NO_IPV6=1 LANG=ru_RU.UTF-8 LESSOPEN="|/usr/bin/lesspipe.sh %s" LINES=65 LOGNAME=guest ....

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

$ TEST=test1 sh -c "echo $TEST" test1

Оценить содержимое набора переменных для сессии можно, вызвав встроенную команду интерпретатора env , в случае Bourne-подобных интерпретаторов (sh, ksh, bash, zsh, pdksh...), и printenv в случае использования интерпретаторов клона C-Shell (csh, tcsh...):

$ env HOSTNAME=myhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 KDE_NO_IPV6=1 SSH_CLIENT=172.16.0.9 50487 22 QTDIR=/usr/lib/qt-3.3 QTINC=/usr/lib/qt-3.3/include SSH_TTY=/dev/pts/6 USER=guest MOZILLA_CERTIFICATE_FOLDER=/home/guest/.evolution/ KDEDIR=/usr MAIL=/var/spool/mail/guest PATH=/usr/games:/usr/local/bin:/bin:/usr/bin:/home/guest/bin INPUTRC=/etc/inputrc PWD=/home/guest KDE_IS_PRELINKED=1 LANG=ru_RU.UTF-8 KDEDIRS=/home/guest/.local/ SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass SHLVL=1 HOME=/home/guest LOGNAME=guest QTLIB=/usr/lib/qt-3.3/lib CVS_RSH=ssh SSH_CONNECTION=172.16.0.9 50487 172.16.2.9 22 LESSOPEN=|/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env

Наборы команд Shell могут компоноваться в командные файлы, называемые скриптами, где в первой строке в специального вида комментарии указывается командный интерпретатор для исполнения этого набора. Например, создадим в текстовом редакторе файл с названием test , следующего содержания:

#!/bin/sh echo Переменная TEST: echo $TEST

Данная программа будет выводить на стандартный вывод текстовое сообщение «Переменная TEST: » и значение переменной TEST, если оно задано. Запустить его из командной строки можно, передав его в качестве параметра командному интерпретатору:

$ sh test Переменная TEST:

Придать переменной глобальный характер можно при помощи оператора export (Bourne) или setenv (C-SHell):

$ export TEST=test1 $ sh test Переменная TEST: test1

Задать локальные значения переменных для выполнения данной программы можно, предварив ими вызов команд:

$ TEST=test2 sh test Переменная TEST: test2

Удаление переменных среды производится при помощи оператора unset.

Переменные окружения Linux вместе с переменными оболочки — то, что определяет настройки в рамках пользовательской сессии.

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

Переменные окружения Linux, переменные оболочки

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

Переменные оболочки содержат данные, которые определяют состояние текущей сессии. Например, текущая директория.

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

Список переменных окружения можно посмотреть выполнив printenv или env

……
LC_MEASUREMENT=ru_RU.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_PAPER=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LANG=en_US.UTF-8
……

Разница в том, что printenv позволяет выводить данные по определенной переменной — например:

Преимущество env в том, что появляется возможность передать переменную определенной команде

Например:

env SHELL=»/bin/bash» ls -la /opt

Просмотреть переменные среды

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
……

Вывод можно перенаправить в less , чтобы в нем удобнее было ориентироваться

Чтобы не изменяя текущее окружение избавиться от лишней информации в выводе можно сделать так

В POSIX режиме не будут выводиться заданные bash функции

Самые часто используемые переменные:
  • SHELL — оболчка, которая интерпретирует команды
  • USER — пользователь
  • PWD — текущий каталог
  • TERM — тип, терминала, который эмулируется

Команды в оболочке позволяют менять значение переменных. Так pwd выводит в консоль текущую директорию

/home/admin

Это переменная оболочки PWD

admin@desktop:~$ set | grep PWD

OLDPWD=/tmp
PWD=/home/admin

Перейдем в /tmp и посмотрим как изменится значение

admin@desktop:~$ cd /tmp/

admin@desktop:/tmp$ set | grep PWD

OLDPWD=/home/admin
PWD=/tmp

Можно увидеть при смене каталога просто меняется значение переменной shell-а PWD, также изменяется и OLDPWD

Как установить переменную окружения или оболчки

Переменная оболочки добавляется следующим образом

SOMEVAR="Hi there"

В выводе env ее не будет, потому, что это переменная именно shell, а не окружения

Просмотреть содержимое можно через echo добавив знак $ перед именем

Hi there

Чтобы переменную добавить в окружение ее нужно экспортировоать

export SOMEVAR=»Hi there»

SOMEVAR=Hi there

После этого значение будет наследоваться дочерними процессами.

Удалить переменную окружения можно той же командой export с ключем -n

Из оболочки значение удаляется unset

Автоматическая загрузка переменных при логине

Linux системы используют файлы ~/.bashrc , ~/.bash_profile , ~/.bash_login или ~/.profile для определение переменных. Файлы считываются при логине, какой из них используется зависит от дистрибутива.

В Ubuntu/Debain это ~/.bashrc. В него добавляются как переменные окружения, так и переменные оболочки.

Самым первым считывается /etc/profile . В нем задано и может быть переопределено какие файлы и в каком порядке использовать дальше.

Для non-login сессии переменные задаются в /etc/bash.bashrc. Такая сессия свойственна для скриптов, запускаемых в фоне.

Для большинства задач достаточно отредактировать ~/.bashrc .

Переменные среды — это специальные переменные, которые определены в оболочке и необходимы программам или скриптам во время выполнения. Они могут быть определены системой или пользователем. Системно-определяемые переменные — это те, которые установлены системой.

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

Если говорить более точно, то переменная среды может быть трех типов:

1. Локальная переменная среды

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

2. Пользовательская переменная среды

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

3. Системные переменные среды

Это переменные среды, доступные в масштабе всей системы, то есть для всех пользователей, присутствующих в этой системе. Эти переменные присутствуют в общесистемных файлах конфигурации, представленных в следующих каталогах и файлах: /etc/environment , /etc/profile, /etc/profile.d/, /etc/bash.bashrc . Эти переменные загружаются каждый раз, когда система включается и в ней регистрируются пользователи, локально или удаленно.

Общие сведения об общих и общесистемных файлах конфигурации

Здесь мы кратко опишем различные файлы конфигурации, перечисленные выше, которые содержат переменные среды, как системные, так и пользовательские.

.bashrc

Этот файл является пользовательским файлом, который загружается каждый раз, когда пользователь создает новый локальный сеанс, т.е. простыми словами, открывает новый терминал. Все переменные среды, созданные в этом файле, вступают в силу каждый раз, когда запускается новый локальный сеанс.

.bash_profile

Переменные среды, перечисленные в этом файле, вызывается каждый раз, когда пользователь регистрируется удаленно, то есть с помощью команды ssh . Если этого файла нет, система ищет файлы .bash_login или .profile .

/etc/environment

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

/etc/bash.bashrc

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

/etc/profile

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

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

$ source

Установка или удаление локальных или сеансовых переменных среды в Linux

Локальные переменные среды могут быть созданы с использованием следующих команд:

$ var=value OR $ export var=value

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

1. Использование env

По умолчанию команда «env » перечисляет все текущие переменные среды. Но, если используется с ключом «-i », то тогда он временно очищает все переменные среды и позволяет пользователю выполнять команду в текущем сеансе в отсутствие всех переменных среды.

$ env –i … command args…

Здесь var = value соответствует любой локальной переменной окружения, которую вы хотите использовать только с этой командой.

$ env -i bash

Запускаем оболочку bash, в которой временно будут очищены все переменные среды. Но при выходе из оболочки все переменные будут восстановлены.

2. Использование отмены

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

$ unset

Где, var-name — это имя локальной переменной, которую вы хотите удалить или очистить.

3. Задайте имя переменной с помощью пустого значения

Другой менее популярный способ — присвоить имени переменной, которую вы хотите очистить, пустое значение, т.е. VAR=(после равняется ничего нет — нажать enter). Это позволит очистить значение локальной переменной для текущего сеанса, для которого она активна.

ПРИМЕЧАНИЕ . ВЫ МОЖЕТЕ ДЕЙСТВИТЕЛЬНО ИЗМЕНЯТЬ ПЕРЕМЕННЫЕ СИСТЕМЫ, НО ИЗМЕНЕНИЯ БУДУТ ОТРАЖАТЬСЯ ТОЛЬКО В ТЕКУЩЕЙ СЕССИИ И НЕ БУДУТ ПОСТОЯННЫМИ.

Узнайте, как создавать, пользовательские и системные переменные среды в Linux

В этом разделе мы рассмотрим, как установить или отключить локальные, пользовательские и системные переменные окружения в Linux с приведенными ниже примерами:

1. Установка и удаление локальных переменных в Linux.

а) Здесь мы создаем локальную переменную VAR1 и устанавливаем ее на любое значение. Затем мы используем unset и в конце эту переменную удаляем.

$ VAR1="TecMint is best Site for Linux Articles" $ echo $VAR1 $ unset VAR1 $ echo $VAR1

б) Другой способ создания локальной переменной — использовать команду export . Созданная локальная переменная будет доступна для текущего сеанса. Чтобы отключить переменную, просто установите пустое значение переменной.

$ export VAR="TecMint is best Site for Linux Articles" $ echo $VAR $ VAR= $ echo $VAR

в) Здесь мы создали локальную переменную VAR2 и установили ее значение. Затем, чтобы запустить команду, временно очистив все локальные и другие переменные среды, мы выполнили команду «env -i ». Эта команда здесь запустила оболочку bash , очистив все остальные переменные среды. После ввода «exit » в вызываемой оболочке bash все переменные будут восстановлены.

$ VAR2="TecMint is best Site for Linux Articles" $ echo $VAR2 $ env -i bash $ echo $VAR2

2. Установка и удаление пользовательских переменных окружения в Linux.

a) Измените файл .bashrc в своем домашнем каталоге, чтобы экспортировать или установить переменную среды, которую нужно добавить. После этого запустите файл, чтобы изменения вступили в силу. Тогда вы увидите переменную («CD» в моем случае), которая вступила в силу. Эта переменная будет доступна каждый раз, когда вы открываете новый терминал для этого пользователя, но не для сеансов удаленного входа.

$ vi .bashrc

.bashrc .

Export CD="This is TecMint Home"

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

$ source .bashrc $ echo $CD

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

б) Чтобы добавить переменную, которая будет доступна для сеансов удаленного входа, измените файл .bash_profile .

$ vi .bash_profile

Добавьте следующую строку в файл .bash_profile .

Export VAR2="This is TecMint Home"

Переменная будет доступна, когда выполните удаленный используя ssh вход для этого пользователя, но не во время открытия нового локального терминала.

$ source .bash_profile $ echo $ VAR2

Здесь VAR2 изначально не доступен, но при выполнении удаленного входа используя ssh пользователю на localhost, переменная становится доступной.

$ ssh $ echo $ VAR2

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

ПРИМЕЧАНИЕ . Эти переменные будут доступны при каждом входе в систему для текущего пользователя, но не для других пользователей.

3. Установка и удаление системных переменных окружения в Linux.

а) Чтобы добавить системную переменную без входа (то есть та, которая доступна для всех пользователей, когда какой-либо из них открывает новый терминал, но не когда существует удаленный доступ любому пользователю к машине) добавьте эту переменную в файл /etc/bash.bashrc .

Export VAR="This is system-wide variable"

После этого перечитайте файл.

$ source /etc/bash.bashrc

Теперь эта переменная будет доступна для каждого пользователя, когда он откроет новый терминал.

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

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

б) Если вы хотите, чтобы какая-либо переменная среды была доступна, когда какой-либо из пользователей на вашем компьютере выполнил удаленный вход, но не открывал какой-либо новый терминал на локальном компьютере, вам необходимо отредактировать файл — /etc/profile .

Export VAR1="This is system-wide variable for only remote sessions"

После добавления переменной просто перечитайте файл. Тогда переменная будет доступна.

$ source / etc / profile $ echo $ VAR1

Чтобы удалить эту переменную, удалите строку из файла /etc/profile и перечитайте ее.

в) Однако, если вы хотите добавить переменную в любую среду, в которой вы хотите быть доступны по всей системе, как для сеансов удаленного входа, так и для локальных сеансов для всех пользователей, просто экспортируйте переменную в /etc/environment.

Export VAR12="I am available everywhere"

После этого только перечитайте файл и изменения вступят в силу.

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

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

Чтобы очистить эту переменную, просто удалите запись в файле /etc/environment и перечитайте файл.

ПРИМЕЧАНИЕ . Изменения вступают в силу при перечитывании файла /etc/environment . Но, если нет, вам может понадобиться выйти из системы и снова войти в систему.

Вопросы по статье задавайте в комментариях ниже.

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute

  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график - обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • А еще поможем Вам:

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

    Значениями переменной среды может быть редактор по умолчанию, который будет использоваться, например, расположение всех файлов, которые могут быть выполнены в системе или локальные настройки для системы. Для начинающих это немного сложно, но переменная окружения – отличный способ совместного использования настроек конфигурации между несколькими приложениями и процессами.

    В пакете Coreutils размещены программы env и printenv. Чтобы перечислить все переменные среды, которые в настоящее время имеют значение, просто введите:

    $ printenv

    В оболочке bash существуют два типа переменных среды:

    • Глобальные переменные
    • Местные переменные

    Глобальные переменные окружения

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

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

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

    Локальные переменные среды

    Поскольку их имя указывает, что переменные локальной среды могут отображаться только в локальном процессе, в котором они определены. Не смешивайте, хотя и о переменных локальной среды, они одинаково важны как глобальные переменные среды. Фактически, система Linux также по умолчанию будет определять стандартные локальные переменные среды для вас. Это становится сложно, когда вы пытаетесь увидеть список переменных локальной среды. К сожалению, для нас нет команды, которая будет отображать только локальные переменные среды. Существует команда, которая отображает все переменные среды, заданные для определенного процесса. Обратите внимание, что это также включает глобальные переменные окружения.

    Установка переменных среды

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

    Настройка переменных локальной среды

    После запуска оболочки bash (или появления сценария оболочки) вам разрешено создавать локальные переменные, которые видны внутри вашего shell-процесса. Вы можете присвоить переменную окружения переменной string или numeric с помощью знака равенства, которому присваивается значение переменной:

    $ andreyex_test=testing $ echo $andreyex_test testing $

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

    Если вам нужно назначить строку значений, содержащих пробелы, вам нужно будет использовать один кавычек, чтобы указать начало и конец строки:

    $ andreyex_test=testing a long string -bash: a: command not found $ andreyex_test="testing a long string" $ echo $andreyex_test testing a long string

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

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

    В оболочке bash это стандартное соглашение. Если вы настраиваете новые переменные среды, это не требуется, но рекомендуется использовать строчные буквы. Это помогает дифференцировать ваши личные переменные среды из результатов переменных системной среды.

    ПРИМЕЧАНИЕ . Очень важно, чтобы между именем переменной среды, знаком равенства и значением не было пробелов. Если вы помещаете какие-либо пробелы в присваивание, оболочка bash интерпретирует значение как отдельную команду:

    $ andreyex_test2 = test -bash: andreyex_test2: command not found $

    Установленная локальная переменная среды в вашем процессе оболочки будет доступна для использования в любом месте вашего shell-процесса. Но если вы создаете другую оболочку, она недоступна в дочерней оболочке:

    $ bash $ echo $andreyex_test $ exit exit $ echo $andreyex_test testing a long string $

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

    Аналогично, если вы установите локальную переменную окружения в дочернем процессе после того, как вы покинете дочерний процесс, переменная локальной среды перестает быть доступной:

    $ bash $ andreyex_test=testing $ echo $andreyex_test testing $ exit exit $ echo $andreyex_test $

    Переменная среды andreyex_test, установленная в дочерней оболочке, не существует, когда мы возвращаемся к родительской оболочке.

    Настройка глобальных переменных окружения

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

    Это выполняется с помощью команды export:

    $ echo $andreyex_test testing a long string $ export andreyex_test $ bash $ echo $andreyex_test testing a long string $

    После того, как мы используем экспорт команды в локальной переменной среды andreyex_test, мы начали новый процесс оболочки и просмотрели значение переменной среды andreyex_test. На этот раз команда export сделала глобальную переменную среды глобальной, поэтому она сохранила свою ценность.

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

    Удаление переменных среды

    Очевидно, что если вы можете создать новую переменную среды, было бы разумно, что вы также можете удалить существующую переменную среды. Это можно сделать, используя команду unset:

    $ echo $andreyex_test testing $ unset andreyex_test $ echo $andreyex_test $

    Если вы ссылаетесь на переменную среды в команде unset, имейте в виду не использовать знак доллара.

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

    $ andreyex_test=testing $ export andreyex_test $ bash $ echo $andreyex_test testing $ unset andreyex_test $ echo $andreyex_test $ exit exit $ echo $andreyex_test testing $

    В этом примере мы устанавливаем локальную переменную среды, называемую andreyex_test, затем экспортируем ее, чтобы сделать ее глобальной переменной окружения. Затем мы начали процесс дочерней оболочки и были проверены, чтобы убедиться, что глобальная переменная среды andreyex_test все еще доступна. Затем, еще находясь в дочерней оболочке, мы использовали команду unset для удаления глобальной переменной среды andreyex_test, а затем вышли из дочерней оболочки. Теперь вернемся к исходной родительской оболочке, мы проверили значение переменной среды andreyex_test, и оно все еще действует.

    Переменные среды Shell по умолчанию

    Существуют конкретные переменные среды, которые bash shell использует для определения системной среды. Вы всегда можете подсчитать эти переменные, которые будут использоваться в вашей системе Linux. Поскольку оболочка bash является производной исходной оболочки Unix Bourne, она также включает переменные среды, первоначально определенные в этой оболочке.

    Следующие примеры показывают, что переменные среды, предоставляемые оболочкой bash, совместимы с исходной оболочкой Unix Bourne.

    До сих пор наиболее ценной переменной среды в этом списке является переменная среды PATH.

    Когда вы вводите команду в командной оболочке оболочки (интерфейс командной строки), оболочка должна искать систему, чтобы найти программу. Каталоги, которые он ищет в поисках команд, определяются переменной среды PATH. В системе Linux переменная среды PATH должна выглядеть примерно так:

    $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin $

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

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

    Переменные Bash Shell Bourne:

    CDPATH: список каталогов, разделенных двоеточиями, используемых в качестве пути поиска для команды cd.
    HOME: домашний каталог текущего пользователя.
    IFS: список символов, которые разделяют поля, используемые оболочкой для разделения текстовых строк.
    MAIL: имя файла для почтового ящика текущего пользователя. Оболочка bash проверяет этот файл для новой почты.
    MAILPATH: список из нескольких имен файлов для почтового ящика текущего пользователя. Оболочка bash проверяет каждый файл в этом списке для новой почты.
    OPTARG: значение последнего аргумента параметра, обрабатываемого командой getopts.
    OPTIND: значение индекса последнего аргумента параметра, обработанного командой getopts.
    PATH: список каталогов, разделенных двоеточиями, где оболочка ищет команды.
    PS1: строка приглашения командной строки основной командной строки.
    PS2: строка приглашения интерфейса командной строки вторичной оболочки.

    Переменные среды Shell bash:

    BASH: полное имя пути для выполнения текущего экземпляра оболочки bash.
    BASH_ENV: при установке каждый сценарий bash пытается запустить файл запуска, определенный этой переменной перед запуском.
    BASH_VERSION: номер версии текущего экземпляра оболочки bash.
    BASH_VERSINFO: массив переменных, содержащий отдельные основные и младшие номера версий текущего экземпляра оболочки bash.
    COLUMNS: содержит ширину терминала терминала, используемую для текущего экземпляра оболочки bash.
    COMP_CWORD: индекс в переменной COMP_WORDS, который содержит текущую позицию курсора.
    COMP_LINE: текущая командная строка.
    COMP_POINT: индекс текущей позиции курсора относительно начала текущей команды.
    COMP_WORDS: переменный массив, содержащий отдельные слова в текущей командной строке.
    COMPREPLY: переменный массив, содержащий возможные коды завершения, генерируемые функцией оболочки.
    DIRSTACK: массив переменных, содержащий текущее содержимое стека директорий.
    EUID: эффективный идентификатор пользователя текущего пользователя.
    FCEDIT: редактор по умолчанию, используемый командой fc.
    FIGNORE: список суффиксов, разделенных двоеточиями, для игнорирования при выполнении завершения имени файла.
    FUNCNAME: имя исполняемой в данный момент функции оболочки.
    GLOBIGNORE: список разделенных двоеточиями шаблонов, определяющих набор имен файлов, которые следует игнорировать, расширяя имя файла.
    GROUPS: переменный массив, содержащий список групп, членом которого является текущий пользователь.
    histchars: до трех символов, которые управляют расширением истории.
    HISTCMD: номер истории текущей команды.
    HISTCONTROL: Управляет тем, какие команды вводятся в списке истории оболочки.
    HISTFILE: имя файла для сохранения списка истории оболочки (по умолчанию – история.bash).
    HISTFILESIZE: максимальное количество строк для сохранения в файле истории.
    HISTIGNORE: список шаблонов, разделенных двоеточием, используемый для определения того, какие команды игнорируются для файла истории.
    HISTSIZE: максимальное количество команд, хранящихся в файле истории.
    HOSTFILE: содержит имя файла, который должен быть прочитан, когда оболочке необходимо заполнить имя хоста.
    HOSTNAME: имя текущего хоста.
    HOSTTYPE: Строка, описывающая машину bash-shell, работает.
    IGNOREEOF: количество последовательных символов EOF, которые должна получить оболочка перед выходом. Если это значение не существует, по умолчанию оно равно единице.
    INPUTRC: имя файла инициализации Readline (по умолчанию – .inputrc).
    LANG: категория локали для оболочки.
    LC_ALL: переопределяет переменную LANG, определяя категорию локали.
    LC_COLLATE: устанавливает порядок сортировки, используемый при сортировке строковых значений.
    LC_CTYPE: Определяет интерпретацию символов, используемых при расширении имени файла и сопоставлении с образцом.
    LC_MESSAGES: определяет параметр локали, используемый при интерпретации строк с двойными кавычками, которым предшествует знак доллара.
    LC_NUMERIC: указывает локальную настройку, используемую для форматирования чисел.
    LINENO: номер строки в исполняемом скрипте.
    LINES: Определяет количество линий, доступных на терминале.
    MACHTYPE: строка, определяющая тип системы в формате cpu-company-system.
    MAILCHECK: как часто оболочка должна проверять (по умолчанию 60 секунд) для новой почты.
    OLDPWD: предыдущий рабочий каталог, используемый в оболочке.
    OPTERR: если установлено значение 1, оболочка bash отображает ошибки, сгенерированные командой getopts.
    OSTYPE: Строка, определяющая операционную систему, в которой работает оболочка.
    PIPESTATUS: переменный массив, содержащий список значений статуса выхода из процессов процесса переднего плана.
    POSIXLY_CORRECT: если установлено, bash запускается в режиме POSIX.
    PPID: идентификатор процесса (PID) родительского процесса оболочки bash.
    PROMPT_COMMAND: если установлено, команда для выполнения перед отображением первичного приглашения.
    PS3: приглашение использовать команду select.
    PS4: подсказка, отображаемая до того, как командная строка будет эхом, если используется параметр bash -x.
    PWD: текущий рабочий каталог.
    RANDOM: возвращает случайное число от 0 до 32767. Присвоение значения этой переменной сгенерирует генератор случайных чисел.
    REPLY: переменная по умолчанию для команды чтения.
    SECONDS: количество секунд с момента запуска оболочки. Присвоение значения сбрасывает таймер на значение.
    SHELLOPTS: список разрешенных опций оболочки bash, разделенных двоеточием.
    SHLVL: указывает уровень оболочки, увеличивающийся на единицу при каждом запуске новой оболочки bash.
    TIMEFORMAT: формат, определяющий, как оболочка отображает значения времени.
    TMOUT: значение того, как долго (в секундах) команды выбора и чтения должны ждать ввода. Значение по умолчанию, равное нулю, означает, что нужно ждать бесконечно.
    UID: реальный идентификатор пользователя текущего пользователя.

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

    Вывод

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

    Система Linux использует каждую глобальную и локальную переменные среды для хранения информации о системной среде. Вы сможете получить доступ к этой информации из интерфейса командной строки оболочки, а также для внутренних сценариев оболочки. Оболочка bash использует переменные системной среды, определенные в исходной оболочке UNO Bourne, также как и множество новых переменных среды. Переменная среды PATH определяет шаблон поиска, который принимает оболочка bash для поиска исполняемой команды. Вы сможете изменить переменную среды PATH, чтобы добавить свои собственные каталоги или, возможно, текущий символ каталога, чтобы упростить работу с вашими программами. Вы также можете создавать свои собственные глобальные и локальные переменные среды для собственного использования. После создания переменной среды она доступна для всего сеанса оболочки.

    Существует много файлов запуска, которые запускают оболочку bash после ее запуска. Эти файлы запуска могут содержать определения переменных среды для установки стандартных переменных среды для каждого сеанса bash. После входа в систему Linux оболочка bash обращается к файлу запуска /etc/profile, а также к трем локальным файлам запуска для каждого пользователя, $HOME/.bash, $HOME/.bash login и $HOME/.profile.

    Пользователи будут настраивать эти файлы для включения переменных среды и сценариев запуска для собственного использования. Оболочка bash дополнительно предоставляет переменные массивы окружения. Эти переменные среды могут содержать несколько значений в одной переменной. Вы сможете получить доступ к значениям индивидуально, указав значение индекса или в целом, указав полное имя массива переменных среды. Наконец, в этом руководстве мы должны упомянуть использование командных псевдонимов. Хотя не переменные среды, псевдонимы команд ведут себя почти как переменные среды. Они позволяют вам определять псевдоним для команды вместе с ее параметрами. Вместо того, чтобы вводить очень длинную команду и параметры, вы сможете просто присвоить ей простой псевдоним и использовать псевдоним в любое время в сеансе оболочки.

     
    Статьи по теме:
    Прошивка телефона, смартфона и планшета ZTE
    On this page, you will find the official link to download ZTE Blade L3 Stock Firmware ROM (flash file) on your Computer. Firmware comes in a zip package, which contains Flash File, Flash Tool, USB Driver and How-to Flash Manual. How to FlashStep 1 : Downl
    Завис компьютер — какие клавиши нажать на клавиатуре, как перезагрузить или выключить
    F1- вызывает «справку» Windows или окно помощи активной программы. В Microsoft Word комбинация клавиш Shift+F1 показывает форматирование текста; F2- переименовывает выделенный объект на рабочем столе или в окне проводника; F3- открывает окно поиска файла
    ISBN, УДК, ББК, штриховые коды, выходные данные
    Для публикации работы (статьи, книги, диссертации) автору необходимо указать тематический раздел (индекс) существующих классификаций, к которому эта работа относится, и авторский знак. Классификационные индексы издания – это индексы УДК,ББК и ГРНТИ. УДК –
    Скачать клавиатурный тренажер для детей на русском бесплатно
    Основные возможности уникальный альтернативный вариант для расположения рук на клавиатуре; поддержка различных раскладок и языков; звуковые эффекты для музыкального сопровождения работы; специальные уроки, которые помогают запоминать расположение клави