LINUX.ORG.RU

История изменений

Исправление kostik87, (текущая версия) :

При запуске скрипта запускается отдельная указанная через шебанг (#!/bin/bash) оболочка или отдельная копия той, оболочки, которая используется (из которой скрипт вызывается).

Поэтому твой export виден только в рамках этой отдельно запущенной командной оболочки. И после завершения скрипта через его вызов ./index.sh экспортированных переменных в основной оболочке уже нет.

Экспортировать переменную нужно в случае необходимости её видимости за пределами функций и других скриптах, в которые подключается скрипт из другого файла.

Если ты хочешь, чтобы экспортируемые переменные или функции, описанные в одном файле скрипта были видны в другом, то нужно использовать директиву source или символ ., т.е. source script.sh или . script.sh в другом скрипте или командной оболочке, текущей командной оболочке, из которой скрипт вызывается.

Только нужно убрать exit.

DATE=date +%d-%m-%Y-%R:%S:%N - не понятно зачем, если это планируется использовать в имени файла, то символ двоеточие Linux пропустит, при копировании на файловые системы Windows тоже скопируется, а открыться в Windows не сможет.

Исправление kostik87, :

При запуске скрипта запускается отдельная указанная через шебанг (#!/bin/bash) оболочка или отдельная копия той, оболочки, которая используется (из которой скрипт вызывается).

Поэтому твой export виден только в рамках этой отдельно запущенной командной оболочки. И после завершения скрипта через его вызов ./index.sh экспортированных переменных в основной оболочке уже нет.

Экспортировать переменную нужно в случае необходимости её видимости за пределами функций и других скриптах, в которые подключается скрипт из другого файла.

Если ты хочешь, чтобы экспортируемые переменные или функции, описанные в одном файле скрипта были видны в другом, то нужно использовать директиву source или символ ., т.е. source script.sh или . script.sh в другом скрипте или командной оболочке.

Только нужно убрать exit.

DATE=date +%d-%m-%Y-%R:%S:%N - не понятно зачем, если это планируется использовать в имени файла, то символ двоеточие Linux пропустит, при копировании на файловые системы Windows тоже скопируется, а открыться в Windows не сможет.

Исходная версия kostik87, :

При запуске скрипта запускается отдельная указанная через шебанг (#!/bin/bash) оболочка или отдельная копию той, оболочки, которая используется.

Поэтому твой export виден только в рамках этой отдельно запущенной командной оболочки.

Экспортировать переменную нужно в случае необходимости её видимости за пределами функций.

Если ты хочешь, чтобы экспортируемые переменные или функции, описанные в одном файле скрипта были видны в другом, то нужно использовать директиву source или символ ., т.е. source script.sh или . script.sh в другом скрипте или командной оболочке.

Только нужно убрать exit.

DATE=date +%d-%m-%Y-%R:%S:%N - не понятно зачем, если это планируется использовать в имени файла, то символ двоеточие Linux пропустит, при копировании на файловые системы Windows тоже скопируется, а открыться в Windows не сможет.