- Команда export — экспорт переменных и функций дочерним процессам в Linux.
- Export Command in Linux
- Export command in Linux without any arguments
- Viewing all exported variables on current shell
- Using export with functions
- Export Command in Linux Explained
- Understanding how export command works
- Make exported shell variables ‘permanent’ with bashrc file
- Why use export command?
- Bonus Tip: Remove a variable from exported list
Команда 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 , описывающая пути поиска исполняемых файлов. Кроме того, некоторые процессы могут изменять набор существующих переменных, экспортируя ( передавая ) их, при необходимости, дочерним процессам.
Ниже приведен простой пример экспорта переменных из текущей командной оболочки в дочернюю:
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 . Для конкретных пользователей настройки определяются содержимым файлов в домашнем каталоге:
~/.bash_profile — индивидуальные пользовательские настройки среды окружения. В этом файле пользователи могут добавить дополнительные конфигурационные параметры, либо изменить настройки, заданные по умолчанию, например свое значение переменной PATH.
~/.bash_login — настройки, активируемые при входе в систему.
~/.profile — конфигурационные настройки оболочки данного пользователя.
~/.bashrc — конфигурационные настройки оболочки bash данного пользователя.
~/.bash_logout — команды, выполняемые при выходе из системы.
Export Command in Linux
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
In this guide, we will look at the export command in Linux. Export is a built-in command of the Bash shell. It is used to mark variables and functions to be passed to child processes. Basically, a variable will be included in child process environments without affecting other environments. To get a clearer picture of what we are talking about, let’s dive in and have a look at the export command examples.
Export command in Linux without any arguments
Without any arguments, the command will generate or display all exported variables. Below is an example of the expected output.
Sample output
Viewing all exported variables on current shell
If you wish to view all exported variables on the current shell, use the -p flag as shown in the example
Sample output
Using export with functions
Suppose you have a function and you wish to export it, how do you go about it? In this case , the -f flag is used. In this example, we are exporting the function name () . First, call the function
You can also assign a value before exporting a function as shown
In the above example, the variable ‘student’ has been assigned the value ‘Divya’ To export the variable run
Check the output below of the commands we have just executed Output The above can be achieved in 2 simple steps by declaring and exporting the variable in one line as shown
Output This concludes our tutorial about export command. Go ahead and give it a try and see the magic! Your feedback is most welcome.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases. Learn more about us
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
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.
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.