- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Переменные окружения в Linux: как посмотреть, установить и сбросить
- Переменные окружения и переменные оболочки
- Про Linux за 5 минут
- Вывести список всех переменных окружения и оболочки
- Общий набор переменных окружения в Linux
- Установка переменных окружения в Linux
- Установить постоянные переменные окружения в Linux
- Использование файла .bashrc
- Использование файла .bash_profile
- Использование etc/environment
- Установить переменные окружения в одной строкой
- Сбросить переменные окружения в Linux
- Использование команды unset
- Использование команды set -n
- Установить переменную окружения PATH в Linux
- Заключение
- putenv
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- Смотрите также
- User Contributed Notes 7 notes
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Переменные окружения в Linux: как посмотреть, установить и сбросить
Работа с переменными
Переменные окружения (или переменные среды) — это набор пар ключ-значение, которые хранятся в вашем Linux и используются процессами для выполнения определенных операций. Они отвечают за стандартное поведение системы и приложений. При взаимодействии с вашим сервером через сеанс оболочки, есть много информации, которую ваша оболочка обрабатывает, чтобы определить ее поведение и доступы. Некоторые из этих параметров содержатся в настройках конфигурации, а другие определяются пользовательским вводом. Оболочка отслеживает все эти параметры и настройки через окружение. Окружение — это область, которую оболочка создает каждый раз при запуске сеанса, содержащего переменные, определяющие системные свойства. Например, это может быть часовой пояс в системе, пути к определенным файлам, приложения по-умолчанию, локали и многое другое. Переменные окружения также могут использоваться в программах оболочки или в подоболочках для выполнения различных операций.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
В этом руководстве мы расскажем, как просматривать, устанавливать и сбрасывать переменные окружения в вашей системе.
Переменные окружения и переменные оболочки
Переменные имеют следующий формат:
Должны соблюдаться следующие правила:
- Имена переменных чувствительны к регистру (регистрозависимы). Переменные окружения должны быть написаны большими буквами (UPPER CASE).
- Несколько значений переменных разделяются двоеточием :
- Вокруг символа = нет пробела
Переменные можно разделить на две категории:
- Переменные окружения (Environmental Variables) — это переменные, которые определены для текущей оболочки и наследуются любыми дочерними оболочками или процессами. Переменные окружения используются для передачи информации в процессы, которые порождаются из оболочки.
- Переменные оболочки (Shell Variables) — это переменные, которые содержатся исключительно в оболочке, в которой они были установлены или определены. Они часто используются для отслеживания эфемерных данных, например, текущего рабочего каталога.
Про Linux за 5 минут
Вывести список всех переменных окружения и оболочки
Мы можем увидеть список всех наших переменных окружения, используя команды env или printenv . В состоянии по умолчанию они должны работать точно так же:
Это типичный вывод как для env , так и для printenv . Разница между этими двумя командами проявляется только в их более конкретной функциональности. Например, с помощью printenv вы можете запросить значения отдельных переменных:
А как посмотреть переменные оболочки?
Для этого можно использовать команду set . Если мы введем set без каких-либо дополнительных параметров, мы получим список всех переменных оболочки, переменных окружения, локальных переменных и функций оболочки:
Тут мы получим гигантский вывод, поэтому стоит использовать less , чтобы разделить содержимое на страницы:
Также для вывода переменной оболочки можно использовать команду echo :
Общий набор переменных окружения в Linux
Посмотрим на общий набор переменных окружения, которые вы можете найти в своей системе.
- USER: текущее имя пользователя, использующего систему
- EDITOR: какая программа запускается для редактирования файла на вашем хосте
- HOME: домашний каталог текущего пользователя
- PATH: список каталогов, разделенных двоеточиями, в которых система ищет команды
- PS1: основная строка приглашения (для определения отображения приглашения оболочки)
- PWD: текущий рабочий каталог
- _: самая последняя команда, выполненная в системе пользователем
- MAIL: путь к почтовому ящику текущего пользователя
- SHELL: оболочка, используемая для интерпретации команд в системе, она может быть много разных (например, bash, sh, zsh или другие)
- LANG: кодировка языка, используемая в системе
- DESKTOP_SESSION: текущий рабочий стол, используемый на вашем хосте (GNOME, KDE)
- HISTFILESIZE: количество строк истории команд, сохраненных в файле истории
- HISTSIZE: количество строк истории, разрешенных в памяти
- UID: текущий UID для пользователя
- HOSTNAME: имя компьютера системы
- TERM: указывает тип терминала
- OLDPWD: предыдущий рабочий каталог
- BASHOPTS: список параметров, которые использовались при выполнении bash.
- BASH_VERSION: версия bash, выполняемая в удобочитаемой форме.
- BASH_VERSINFO: версия bash с машиночитаемым выводом.
- COLUMNS: Количество столбцов в ширину, которые используются для вывода вывода на экран.
- DIRSTACK: стек каталогов, доступных с помощью команд pushd и popd.
- IFS: внутренний разделитель полей для разделения ввода в командной строке. По умолчанию это пробел.
- SHELLOPTS: параметры оболочки, которые можно установить с помощью параметра set.
Установка переменных окружения в Linux
В Linux у вас есть много разных способов установки переменных окружения в зависимости от того, хотите ли вы сделать их постоянными или нет.
Самый простой способ установить переменные окружения — использовать команду export .
Для примера создаим новую переменную, а затем экспортируем ее.
Чтобы создать новую переменную оболочки с именем NEW_VARIABLE и значением «test», и затем сразу экспортировать ее введите:
Используя export , ваша переменная окружения будет установлена для текущего сеанса оболочки. Как следствие, если вы откроете другую оболочку или перезапустите свою систему, переменная окружения больше не будет доступна.
Установить постоянные переменные окружения в Linux
Как вы видели в предыдущем разделе, переменные окружения не были постоянными при перезапуске оболочки. Однако существует способ сделать ваши изменения постоянными: с помощью системных файлов, которые читаются и выполняются в определенных условиях.
Использование файла .bashrc
Самый популярный способ постоянной установки переменных среды — это добавить их в файл .bashrc .
Файл .bashrc — это скрипт, выполняемый всякий раз, когда вы инициализируете сеанс интерактивной оболочки. Как следствие, когда вы запускаете новый терминал через интерфейс GNOME или просто используете screen сессию, вы будете использовать файл .bashrc .
Например, добавьте следующие записи в ваш файл .bashrc :
Сохраните ваш файл и используйте команду source для перезагрузки файла bashrc для текущего сеанса оболочки.
Вы можете вывести новую переменную окружения с помощью printenv и посмотреть, дату в Linux, изменив TZ.
Отлично, ваши изменения теперь сохраняются после перезагрузки оболочки или системы!
Использование файла .bash_profile
В качестве альтернативы, если вы планируете подключаться к своим сеансам с помощью login оболочек, вы также можете добавить переменные окружения непосредственно в файл .bash_profile .
Использование etc/environment
Если вам нужно применить определенные переменные окружения для всех, то определить общесистемные переменные окружения. Чтобы установить общесистемные переменные окружения в Linux, вам нужно экспортировать переменные в файл /etc/environment .
Например, чтобы изменить редактор, используемый глобально, вы можете изменить переменную EDITOR в файле окружения.
Теперь попробуйте войти в систему как под разными пользователями в вашей системе, и вы увидите, что переменная EDITOR установлена для всех на сервере.
Установить переменные окружения в одной строкой
Теперь, когда вы знаете все подробности о том, как устанавливать переменные окружения, вы можете использовать эти шорткаты для их легкой установки.
Сбросить переменные окружения в Linux
Теперь, когда вы установили много переменных окружения в своей системе, вы можете отменить некоторые из них, если вы больше не используете их. В Linux существует два способа сброса переменных окружения: с помощью команды unset или путем удаления записей переменных в ваших системных файлах.
Использование команды unset
Чтобы удалить переменную окружения, используйте команду unset со следующим синтаксисом:
Выглядит это так:
Использование команды set -n
Кроме того, вы можете сбросить переменные окружения, используя команду set с флагом -n -n.
Установить переменную окружения PATH в Linux
В системах Linux очень часто задают переменную окружения PATH , чтобы система могла находить команды.
Чтобы отобразить текущую переменную окружения PATH , выполните команду printenv :
Чтобы установить переменную окружения PATH, добавьте строку export в файл .bashrc и используйте с ним команду source :
Успех! Вы успешно обновили переменную окружения PATH в Linux.
Заключение
В сегодняшнем руководстве вы узнали, что переменные окружения в Linux можно задавать несколькими способами: с помощью команды export , а также путем изменения некоторых системных файлов, чтобы сделать их постоянными.
Вы также узнали, что можно сбросить переменные окружения и как легко обновить переменную окружения PATH .
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Источник
putenv
(PHP 4, PHP 5, PHP 7, PHP 8)
putenv — Устанавливает значение переменной среды
Описание
Добавляет assignment в переменные окружения сервера. Переменная будет существовать только на время выполнения текущего запроса. По его завершении переменная вернётся в изначальное состояние.
Список параметров
Установка вида «FOO=BAR»
Возвращаемые значения
Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.
Примеры
Пример #1 Установка значения переменной среды
Смотрите также
- getenv() — Получение значения переменной окружения
- apache_setenv() — Устанавливает переменную subprocess_env Apache
User Contributed Notes 7 notes
putenv/getenv, $_ENV, and phpinfo(INFO_ENVIRONMENT) are three completely distinct environment stores. doing putenv(«x=y») does not affect $_ENV; but also doing $_ENV[«x»]=»y» likewise does not affect getenv(«x»). And neither affect what is returned in phpinfo().
Assuming the USER environment variable is defined as «dave» before running the following:
print «env is: » . $_ENV [ «USER» ]. «\n» ;
print «(doing: putenv fred)\n» ;
putenv ( «USER=fred» );
print «env is: » . $_ENV [ «USER» ]. «\n» ;
print «getenv is: » . getenv ( «USER» ). «\n» ;
print «(doing: set _env barney)\n» ;
$_ENV [ «USER» ]= «barney» ;
print «getenv is: » . getenv ( «USER» ). «\n» ;
print «env is: » . $_ENV [ «USER» ]. «\n» ;
phpinfo ( INFO_ENVIRONMENT );
?>
prints:
env is: dave
(doing: putenv fred)
env is: dave
getenv is: fred
(doing: set _env barney)
getenv is: fred
env is: barney
phpinfo()
Variable => Value
.
USER => dave
.
White spaces are allowed in environment variable names so :
( ‘U =33’ );
?>
Is not equivalent to
It’s the putenv() type of environment variables that get passed to a child process executed via exec().
If you need to delete an existing environment variable so the child process does not see it, use:
That is, leave out both the «=» and a value.
Environment variables are part of the underlying operating system’s
way of doing things, and are used to pass information between a parent
process and its child, as well as to affect the way some internal
functions behave. They should not be regarded as ordinary PHP
variables.
A primary purpose of setting environment variables in a PHP script is
so that they are available to processes invoked by that script using
e.g. the system() function, and it’s unlikely that they would need to
be changed for other reasons.
For example, if a particular system command required a special value
of the environment variable LD_LIBRARY_PATH to execute successfully,
then the following code might be used on a *NIX system:
= getenv ( «LD_LIBRARY_PATH» ); // save old value
$newld = «/extra/library/dir:/another/path/to/lib» ; // extra paths to add
if ( $saved ) < $newld .= ": $saved " ; >// append old paths if any
putenv ( «LD_LIBRARY_PATH= $newld » ); // set new value
system ( «mycommand -with args» ); // do system command;
// mycommand is loaded using
// libs in the new path list
putenv ( «LD_LIBRARY_PATH= $saved » ); // restore old value
?>
It will usually be appropriate to restore the old value after use;
LD_LIBRARY_PATH is a particularly good example of a variable which it
is important to restore immediately, as it is used by internal
functions.
If php.ini configuration allows, the values of environment variables
are made available as PHP global variables on entry to a script, but
these global variables are merely copies and do not track the actual
environment variables once the script is entered. Changing
$REMOTE_ADDR (or even $HTTP_ENV_VARS[«REMOTE_ADDR»]) should not be
expected to affect the actual environment variable; this is why
putenv() is needed.
Finally, do not rely on environment variables maintaining the same
value from one script invocation to the next, especially if you have
used putenv(). The result depends on many factors, such as CGI vs
apache module, and the exact way in which the environment is
manipulated before entering the script.
Multiple invocations of putenv() work as expected: the real problem was that some of the putenv() invocations in my script contained typographical errors.
I typed, e.g., putenv( «IMAGE_DATABASE=» . $_SERVER <'IMAGE_DATABASE'>);
which of course is incorrect. ‘<' and '>‘ should have been ‘[‘ and ‘]’.
Because my first call to putenv() did not have that typo, it worked correctly, but the remaining three calls I coded with the typo merely cleared the corresponding environment variables and thus did not make it into the external script I invoked via a system() call. I suspect the fact my first invocation was typed correctly affected my efforts looking at the syntax in the following invocations.
The trivial extension to the example provided is to merely call putenv() multiple times, once for each variable.
Источник