Команда 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:
PID TTY TIME CMD
7224 pts/0 00:00:00 bash
Если же выполнить команду, для отображения списка процессов, для которых родительским является процесс init ( PID=1), то мы получим список всех автоматически стартовавших на данный момент времени, процессов:
В данном списке не будет процессов, порожденных дочерними процессами процесса 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 - команды, выполняемые при выходе из системы.
Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой "Поделиться" для своей социальной сети