2013-07-25 3 views
0

myDeploy.sh를 통해 변수를 내보내려고하지만 내보내기가 설정되지 않습니다. 내가 반향을 일으킬 때 울리지 않는다. 그러나, 내가 변수를 명시 적으로 설정하면 제대로 설정하고 echo.Below 내 코드의 발췌 문장입니다.스크립트 파일을 통해 변수를 내보낼 수 없습니다.

나는 그것이 나를 위해 경로를 반향되지 echo $BUILD_ROOT 메아리 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 

. 하지만 명령 프롬프트에서 명시 적으로 수행 할 때

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

올바르게 설정되고 반향됩니다. 내가 뭘 놓치고 있니?

+3

어떻게 스크립트를 부르겠습니까? '#./myDeploy.sh' 또는'#와 같습니다. myDeploy.sh'? –

+0

이 파일 권한이 맞습니까? – Ishmeet

+0

./myDeploy.sh like – mahesh

답변

4

. ./script

또는

source script

같은 스크립트가 (서브 쉘을 생성하지 않고) 현재의 쉘 컨텍스트에서 스크립트를 실행하는 것입니다 실행 및 환경 변수는 스크립트 내에서 설정 현재 셸에서 사용할 수 있습니다. 수동에서

:

. 파일명 [인수]

읽고 현재 쉘 컨텍스트에서 파일명 인수에서 명령을 실행한다. 파일 이름이 인 경우 슬래시가 포함되어 있지 않으면 변수는 PATH 변수 인 파일 이름을 찾는 데 사용됩니다. Bash가 POSIX 모드에 있지 않을 때 $PATH에 파일 이름이 없으면 현재 디렉토리가 검색됩니다. 인수가 제공되면 파일 이름이 실행될 때 위치 매개 변수가됩니다. 그렇지 않으면 위치 매개 변수는 변경되지 않고 입니다. 반환 상태는 마지막 명령 의 종료 상태이거나 명령이 실행되지 않으면 0입니다. 파일 이름이이 아니거나 이 아니거나 읽을 수없는 경우 반환 상태는 0이 아닙니다. 이 기본 제공 은 source과 같습니다.

+0

** 소스 **는 항상 나를 위해 일합니다 ... – TheCodeArtist

+0

'source'는'.'의 동의어입니다. – devnull

+1

@TheCodeArtist'source'는 Bash 추가이며 점 ('.') 명령은 모든 POSIX 쉘에 이식 가능합니다. 당신이 하나만 배운다면, 휴대용 하나를 배웁니다. – tripleee

관련 문제