- Изучаем команды Linux: export
- 1. Введение
- 2. Часто используемые опции
- 3. Основы export
- 4. Дочерние и родительские процессы
- 5. Использование команды export
- 6. Экспорт функций командной оболочки
- 7. Удаление имен из списка экспорта
- 8. Заключение
- Команда export — экспорт переменных и функций дочерним процессам в Linux.
- export command in Linux with Examples
- Export in linux bash
- Примеры использования
- Добавление директории в список директорий переменной PATH
- Экспорт функции
Изучаем команды Linux: export
1. Введение
Export — это одна из встроенных команд оболочки bash, поэтому она является неотъемлемой частью вашей командной строки. Она очень проста в использовании, так как синтаксис export допускает использование всего трех опций командной строки. В целом команда export отмечает переменную окружения для экспорта с любым новым дочерним процессом, и это позволяет дочернему процессу наследовать все отмеченные переменные. В данной статье этот процесс будет описан более подробно.
2. Часто используемые опции
-p
выводит список всех имен, экспортированных в текущей оболочке
-n
удаляет имена из списка экспорта
-f
имена экспортируются как функции
3. Основы export
Подумайте над следующим примером:
Строка 1: создается новая переменная с именем «a», содержащая строку «linuxcareer.com».
Строка 2: мы используем команду echo, чтобы вывести содержимое переменной «a».
Строка 3: мы создаем дочерний экземпляр оболочки bash.
Строка 4: переменная «a» теперь не определена.
Из приведенного выше примера можно видеть, что любой дочерний процесс, ответвляющийся от родительского процесса, по умолчанию не наследует переменные родителя. Для этого и нужна команда export. Что произойдет, если мы используем команду export в вышеприведенном примере?
Теперь в строке 3 мы использовали команду export, чтобы экспортировать переменную «a» в созданный новый дочерний процесс. В результате переменная «a» все еще содержит строку «linuxcareer.com», даже после создания нового экземпляра оболочки bash. Здесь важно отметить, что для успешного экспорта «a» необходимо, чтобы процесс, в который экспортируется переменная, ответвлялся от того родительского процесса, из которого экспортируется эта переменная. Связь между дочерним и родительским процессами описана ниже.
4. Дочерние и родительские процессы
В этом разделе мы коротко опишем взимосвязь между дочерним и родительским процессом. Все процессы могут быть родительскими и дочерними одновременно. Единственным исключением является процесс init, который всегда имеет PID (ID процесса) 1. Поэтому init является родительским для всех процессов, запущенных в системе Linux.
Любой создаваемый процесс имеет родительский процесс, из которого он создается, и может быть определен как потомок этого родительского процесса. Например:
Строка 1: вывести PID текущей командной оболочки — 27861
Строка 2: создать новый дочерний процесс из процесса с ID 27861
Строка 3: вывести PID текущей командной оболочки — 28034
Строка 4: вывести список дочерних процессов для PID 27861 с помощью команды ps
При создании нового дочернего процесса команда export просто обеспечивает, что все экспортируемые переменные родительского процесса доступны в дочернем процессе.
5. Использование команды export
Теперь, изучив основы, мы можем продолжить детальное исследование команды export. При использовании команды безо всяких опций и аргументов она просто выводит имена всех переменных, отмеченных для экспорта в дочерние процессы. То же самое происходит при использовании опции -p:
Как было показано выше, для экспорта переменной мы просто используем имя переменной в качестве аргумента команды export.
Как вы можете видеть, после экспорта переменной MYVAR, она будет показываться в списке экспортируемых переменных (строка 4). Приведенный выше пример можно сократить, используя команду export сразу при присваивании значения переменной.
Наиболее широко команда export применяется для объявления переменной оболочки PATH:
В этом примере мы включаем дополнительный путь /usr/local/bin в существующее определение PATH.
6. Экспорт функций командной оболочки
Используя опцию -f, команда export может быть также использована для экспорта функций. В примере ниже мы создаем функцию оболочки под именем printname, которая просто выводит строку «Linuxcareer.com» с помощью команды echo.
7. Удаление имен из списка экспорта
Выполнив один из вышеприведенных примеров, мы имеет переменную MYVAR, определенную в списке экспорта.
Чтобы удалить переменную из списка экспорта, необходимо использовать опцию -n.
8. Заключение
В этой статье рассмотрены основы использования команды export. Чтобы узнать больше подробностей, используйте команду:
Источник
Команда 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 — команды, выполняемые при выходе из системы.
Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой «Поделиться» для своей социальной сети
Источник
export command in Linux with Examples
export is bash shell BUILTINS commands, which means it is part of the shell. It marks an environment variables to be exported to child-processes.
Export is defined in POSIX as The shell shall give the export attribute to the variables corresponding to the specified names, which shall cause them to be in the environment of subsequently executed commands. If the name of a variable is followed by = word, then the value of that variable shall be set to the word.
In simple terms, environment variables are set when you open a new shell session. at any time if you change any of the variable values, the shell has no way of picking that change. The export command, on the other hand, provides the ability to update the current shell session about the change you made to the exported variable. You don’t have to wait until new shell session to use the value of the variable you changed.
Syntax :
Options of export command
1. Without any argument : To view all the exported variables.
EXAMPLE :
2. -p : To view all exported variables on current shell.
SYNTAX :
EXAMPLE :
3. -f: It must be used if the names refer to functions. If -f is not used, the export will assume the names are variables.
SYNTAX :
EXAMPLE : To export shell function:
Note: Bash command is used for showing that in the child shell, the shell function got exported.
4. name[=value]: You can assign value before exporting using the following syntax.
SYNTAX :
EXAMPLE : To set vim as a text editor
Note: No output will be seen on screen, to see exported variable grep from exported ones is used.
5. -n: Named variables (or functions, with -f) will no longer be exported.
SYNTAX :
EXAMPLE :
Note: No output will be seen on screen, to see exported variable grep from exported ones is used.
Источник
Export in linux bash
Команда export является встроенной командной командной оболочки bash, позволяющей устанавливать значения переменных окружения. Для ознакомления с полным списком переменных окружения и их значений может использоваться команда env.
Базовый синтаксис команды выглядит следующим образом:
$ export [параметры] ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ
В том случае, если нужно объявить переменную без установки ее значения, в качестве аргумента может использоваться лишь имя переменной. Команда принимает несколько параметров, которые используются крайне редко. В частности, параметр -p позволяет вывести список всех переменных окружения. Параметр -n позволяет убрать из списка переменных окружения переменную с заданным именем. Наконец, параметр -f позволяет экспортировать функции командной оболочки по аналогии с переменными.
На первый взгляд может показаться, что команда export является бесполезной, так как вы можете объявлять переменные без нее:
$ export a=b
$ echo $a
b
$ x=y
$ echo $x
y
Так какая разница между следующими объявлениями:
$ export first=»hello»
$ first=»hello»
Ну, разница заключается в том, что команда export устанавливает значение переменной окружения, доступной для всех программ, запускаемых с помощью данной командной оболочки. Например, вы можете создать файл test.sh сценария командной оболочки со следующим содержимым:
$ echo $first
$ echo $second
Теперь присвойте переменным различные значения и запустите сценарий с помощью командной оболочки:
$ chmod +x test.sh
$ first=hello
$ export second=world
$ ./test.sh
В результате будет выведено лишь значение второй переменной, а именно:
Очевидно, что значение первой переменной не доступно сценарию test.sh, в отличие от значения второй переменной, объявленной с помощью команды export.
Примеры использования
Добавление директории в список директорий переменной PATH
Для того, чтобы система искала исполняемые файлы в нестандартной директории достаточно добавить путь к этой директории в список директорий, являющийся значением переменной $PATH. Для этой цели может использоваться команда export. Например, для добавления в список директорий путь к текущей директории достаточно выполнить следующую команду:
В данном случае создается локальная переменная окружения PATH, значение которой равно значению глобальной переменной PATH с добавленными к нему символами двоеточия (разделитель путей к директориям) и точки (обозначение текущей директории). Таким же образом могут создаваться локальные варианты всех глобальных переменных окружения.
Экспорт функции
Для того, чтобы экспортировать функцию из одного сценария в другой следует использовать команду export с параметром -f. Это код первого сценария script.sh, из которого экспортируется функция say_hello(), после чего вызывается второй сценарий script2.sh:
export -f say_hello
./script2
А это — код второго сценария script2.sh, в котором не делается ничего кроме вызова этой экспортированной функции:
Теперь при исполнении первого сценария script1.sh будет исполняться второй сценарий script2.sh, вызывающий экспортированную функцию say_hello(). Несложно убедиться в том, что механизм экспорта функций отлично работает:
Источник