2013-07-25 2 views
0

Я пытаюсь экспортировать переменные через myDeploy.sh, но экспорт не устанавливается. Когда я повторяю эхо, это не эхо. Тем не менее, когда я устанавливаю переменную явно в команде, она правильно устанавливает и эхо. Bowow - это фрагмент кода.Невозможно экспортировать переменную через файл сценария

myDeploy.sh

#!/bin/bash 

# export the build root 

export BUILD_ROOT=/tibco/data/GRISSOM2 

export CUSTOM1=/tibco/data/GRISSOM2/DEPLOYMENT_ARTIFACTS/common/MDR_ITEM_E1/rulebase 

export CLEANUP=$BUILD_ROOT/DEPLOYMENT_ARTIFACTS/common 

cd $BUILD_ROOT/DEPLOYMENT_ARTIFACTS/common 

Когда я перекликается echo $BUILD_ROOT это не повторяющий путь для меня. Но когда я делаю это явно в командной строке, например

[[email protected] GRISSOM2]# export BUILD_ROOT=/tibco/data/GRISSOM2 

Он правильно устанавливает и эхо. Что мне не хватает?

+3

Как вы называете сценарий? например '#./myDeploy.sh' или как' #. myDeploy.sh'? –

+0

- это ваши права на файл правильно? – Ishmeet

+0

./myDeploy.sh вот так – mahesh

ответ

4

Запуск сценарий как

. ./script

или

source script

будет выполнять скрипт в текущем контексте оболочки (без создания подоболочку) и переменные окружения, установленные в сценарии будут доступны в вашей текущей оболочке.

Из инструкции:

. имя файла [аргументы]

Чтение и выполнение команд от имени файла аргумента в текущем контексте оболочки. Если filename не содержит косой черты, переменная PATH используется для поиска имени файла. Если Bash не находится в режиме POSIX, выполняется поиск текущего каталога , если имя файла не найдено в $PATH. Если заданы любые аргументы , они становятся позиционными параметрами, когда выполняется filename. В противном случае позиционные параметры равны без изменений. Состояние возврата - это статус выхода последней команды , либо ноль, если команды не выполняются. Если filename не является , он не может быть прочитан, статус возврата отличен от нуля. Этот встроенный эквивалентен source.

+0

** источник ** всегда работает для меня ... – TheCodeArtist

+0

'source' является синонимом' .' – devnull

+1

@TheCodeArtist 'source' является добавлением Bash, а точка (' .'), переносится в каждую оболочку POSIX. Если вы изучаете только один, изучите портативный. – tripleee

Смежные вопросы