Команда export

Команда 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

В результате будет выведено лишь значение второй переменной, а именно:

 
world

Очевидно, что значение первой переменной не доступно сценарию test.sh, в отличие от значения второй переменной, объявленной с помощью команды export.

Примеры использования

Добавление директории в список директорий переменной PATH

Для того, чтобы система искала исполняемые файлы в нестандартной директории достаточно добавить путь к этой директории в список директорий, являющийся значением переменной $PATH. Для этой цели может использоваться команда export. Например, для добавления в список директорий путь к текущей директории достаточно выполнить следующую команду:

$ export PATH=$PATH:.

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

Экспорт функции

Для того, чтобы экспортировать функцию из одного сценария в другой следует использовать команду export с параметром -f. Это код первого сценария script.sh, из которого экспортируется функция say_hello(), после чего вызывается второй сценарий script2.sh:

#!/bin/bash

say_hello() {
    echo "Hello!"
}

export -f say_hello
./script2

А это — код второго сценария script2.sh, в котором не делается ничего кроме вызова этой экспортированной функции:

#!/bin/bash

say_hello

Теперь при исполнении первого сценария script1.sh будет исполняться второй сценарий script2.sh, вызывающий экспортированную функцию say_hello(). Несложно убедиться в том, что механизм экспорта функций отлично работает:

$ ./script1.sh
Hello!