2013-07-25 60 views
0

我想通過myDeploy.sh導出變量,但導出沒有設置。當我回應時,它沒有迴應。但是,當我在命令上明確設置變量時,它將正確設置並回顯。下面是我的代碼的片段。無法通過腳本文件導出變量

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

將在當前shell環境中執行腳本(不創建一個子shell)和環境變量的腳本中設置將在您的目前的外殼中提供。

從手冊:

文件名 [參數]

讀取和在當前 外殼上下文執行從文件名參數的命令。如果文件名不包含斜槓,則使用PATH變量 來查找文件名。當Bash未處於POSIX模式時,如果在$PATH中找不到文件名,將搜索當前的 目錄。如果提供了任何 自變量,則當執行 文件名時,它們成爲位置參數。否則,位置參數是 不變。返回狀態是執行的最後一個命令 的退出狀態,如果沒有執行命令,返回狀態爲零。如果發現文件名稱不是 ,或者無法讀取,則返回狀態爲非零。內置的 相當於source

+0

** source **總是適用於我... – TheCodeArtist

+0

'source'是''的代名詞.'' – devnull

+1

@TheCodeArtist'source'是一個Bash加法,而點('.' )命令可移植到每個POSIX shell。如果你只學習一個,學習便攜式。 – tripleee

相關問題