Вам нужны только export
переменные, которые должны быть «видны» другими программами, которые вы запускаете в оболочке, в то время как те, которые используются только внутри самой оболочки, редактировать не нужно export
.
Вот что говорит страница руководства:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
Это можно продемонстрировать с помощью следующего:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
Объяснение:
- Сначала я
${MYVAR}
задаю переменную Shell с MYVAR="value"
. Используя echo
я могу повторить значение этого, потому что эхо является частью оболочки.
- Тогда я создаю
echo.sh
. Это небольшой скрипт, который в основном делает то же самое, он просто повторяет ${MYVAR}
, но разница в том, что он будет выполняться в другом процессе, потому что это отдельный скрипт.
- При вызове
echo.sh
он ничего не выводит, потому что новый процесс не наследует${MYVAR}
- Затем я экспортирую
${MYVAR}
в свою среду с export
ключевым словом
- Когда я
echo.sh
снова запускаю то же самое , он повторяет содержимое, ${MYVAR}
потому что получает его из среды
Итак, чтобы ответить на ваш вопрос:
Это зависит от того, где будет использоваться переменная, нужно ли вам ее экспортировать или нет.