Команда export - экспорт переменных и функций дочерним процессам в 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:

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 - команды, выполняемые при выходе из системы.

Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой "Поделиться" для своей социальной сети

📎📎📎📎📎📎📎📎📎📎