Linux экспорт переменных окружения

Команда export — экспорт переменных и функций дочерним процессам в Linux.

export — это одна из встроенных команд оболочки пользователя bash, и предназначена для экспорта переменных и функций текущего процесса в дочерний процесс. На практике, команда export применяется в качестве основного средства для определения настроек конкретных приложений. По умолчанию, в операционных системах семейства Linux, переменные, созданные в среде родительского процесса не передаются автоматически дочернему. Чтобы переменная, созданная процессом A , была доступна запущенному им процессу B , необходимо перед запуском дочернего процесса B выполнить экспорт данной переменной с помощью команды export . Так, например, родительский процесс может определить путь к рабочему каталогу какой-либо программы, создав переменную и выполнив ее экспорт перед запуском.

В Linux, все процессы, кроме процесса init могут быть как дочерними, так и родительскими. Процесс init является родительским процессом для всех остальных, запускаемых процессов, имеет идентификатор PID равный 1 и используется для запуска всех прочих процессов в ходе загрузки системы и регистрации пользователей. Любой другой процесс всегда имеет родительский процесс, и может иметь дочерний.

Для получения идентификатора текущего процесса командной оболочки можно воспользоваться командой:

в результате отобразится следующая информация:

6272 — идентификатор процесса ( PID )
Если запустить новую командную оболочку, например bash из текущей, командой

и снова выполнить команду

то отобразится идентификатор текущего процесса в виде другого числа, например 7224
Команда ps позволяет выводить информацию о связанных родительских и дочерних процессах с использованием параметра —ppid :

ps —ppid 6272 — отобразить список процессов, для которых родительским является процесс, PID которого равен 6272:

Если же выполнить команду, для отображения списка процессов, для которых родительским является процесс init ( PID=1), то мы получим список всех автоматически стартовавших на данный момент времени, процессов:

PID TTY TIME CMD 417 ? 00:00:00 udevd 1655 ? 00:00:00 dhclient 1705 ? 00:00:00 auditd 1731 ? 00:00:00 rsyslogd 1774 ? 00:00:00 rpcbind . . . . .

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

ps –e -H — отобразить дерево ( -H )всех процессов ( -e ) на данный момент времени.

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

Читайте также:  Ftp клиент linux командная строка

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

y=yandex.ru — установить значение переменной y , содержащее строку “ yandex.ru ”

x=google.com — установить значение переменной x , содержащее строку “ google.com ”

export x y — выполнить экспорт переменных x и y

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

echo $x $y — отобразить значение переменных x и y

google.com yandex.ru — результат выполнения команды, т.е. значения переменных x и y созданных родительским процессом.

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

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

export –p — вывести список всех экспортируемых переменных. То же самое выполняется, если не задан никакой ключ.

export –n x — удаление заданной переменной x из списка экспорта.

export –f — экспорт переменной в качестве функции.

— Создание и экспорт функции testf :

y=yandex.ru — создание переменной y , принимающей строковое значение yandex.ru .

testf() — создание функции testf , использующей переменную y .

testf — выполнение функции testf , использующей переменную y в текущей командной оболочке.

ping yandex.ru — результат выполнения функции testf .

export -f testf — экспорт функции testf .

export y — экспорт переменной y, используемой в функции testf .

bash — запуск дочерней оболочки bash.

testf — выполнение функции testf .

ping yandex.ru — результат..

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

export y=yandex.ru — создание и экспорт переменной y , принимающей строковое значение yandex.ru .

— Изменение переменной PATH

Наиболее широко команда export применяется для объявления и модификации переменной оболочки PATH:

export PATH=$PATH:/home/localusr/bin — добавить к существующему пути поиска исполняемых файлов, определяеммому переменной PATH каталог /home/localusr/bin .

— Удаление экспортируемой переменной .

export –n y — удаление из списка экспорта переменной y .

Для получения справочной информации по использованию команды export , используйте:

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

Читайте также:  Script linux if null

~/.bash_profile — индивидуальные пользовательские настройки среды окружения. В этом файле пользователи могут добавить дополнительные конфигурационные параметры, либо изменить настройки, заданные по умолчанию, например свое значение переменной PATH.

~/.bash_login — настройки, активируемые при входе в систему.

~/.profile — конфигурационные настройки оболочки данного пользователя.

~/.bashrc — конфигурационные настройки оболочки bash данного пользователя.

~/.bash_logout — команды, выполняемые при выходе из системы.

Источник

Export Command in Linux Explained

The export command in Linux is used for creating environment variables. Understand how it works and how you can use export command for practical usage.

The export command in Linux is used for creating environment variables. You can use it like this:

or a shorthand like this to assign it a value immediately:

You can see the value of exported variables with the echo command:

To make the changes permanent, you should add it to the ~/.bashrc file.

That was just the quick summary. Let’s see it in details to understand it better.

Understanding how export command works

Export Command

In the example below, I declare a shell variable var and assign it a value 3. It’s a shell variable for now.

[email protected]:~$ var=3 [email protected]:~$ echo $var 3

If I exit the terminal and open a new terminal, this shell variable will disappear. If I want to use this variable in a shell script, it won’t work. Similarly, if I switch user (and thus initiating a new shell with this user), this shell variable won’t be available:

[email protected]:~$ su prakash Password: [email protected]:/home/abhishek$ echo $var 

Now, let’s go back to the previous user (and thus the previous shell where I declared the shell variable). You can see that the variable still exists here (because we didn’t terminate this shell session yet):

[email protected]:/home/abhishek$ exit exit [email protected]:~$ echo $var 3

So, now if I use the export command on the variable var here, it will become an environment variable and it will be available to all the subshells, users and shell scripts in this session.

[email protected]:~$ export var [email protected]:~$ echo $var 3 a[email protected]:~$ su prakash Password: [email protected]:/home/abhishek$ echo $var 3

You can check all the environment variables using the printenv command:

Make exported shell variables ‘permanent’ with bashrc file

But the struggle doesn’t end here. If you close the session, exit the terminal, log out or reboot your system, your environment variable will disappear again.

Читайте также:  Как напечатать в linux

This is why it’s a common practice to add the export commands to the runtime configuration (rc) file of your shell.

Every shell has this rc file located in the user’s home directory which is used to determine variables and other configuration when the shell is started. As a user, you can use this rc file to customize your shell and its behavior.

If you are using bash shell, you should have a bashrc file at ~/.bashrc. You can either edit this file in a text editor like Vim or you can just append export var=3 (or whatever you are exporting) to this file.

Once done, you should use the source command to make the changes available immediately.

A good practice is to keep all the user defined environment variables at one place.

Why use export command?

One of the most common use of the export command is when you want to add something to the path so that your Linux system will find the certain command/executable file.

For example, if you installed maven and you want to be able to run it, you should add the directory location of maven executables to the path like this:

export PATH=/opt/maven/bin:$PATH

What does it do? It adds this directory location to the path. When you try to run a command in Linux, your system searches for its executable (usually in bin directory) in the directories mentioned in the PATH variable.

[email protected]:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin [email protected]:~$ export PATH=/opt/maven/bin:$PATH [email protected]:~$ echo $PATH /opt/maven/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Bonus Tip: Remove a variable from exported list

Suppose you want to remove an ‘exported’ variable. You can use the negate option in this fashion:

Keep in mind that this will not reset the value of the variable. It will just turn the exported global variable into a local variable. It will continue to have the same value you had set earlier.

If you want to remove the variable from the exported list as well as remove its assigned value, use the unset option:

I hope you have a better idea of the export command in Linux now. If you have doubts, please feel free to ask in the comment section.

Источник

Оцените статью
Adblock
detector