2014-10-17 59 views
0

我的.profile文件中有一個RESLOC變量,該變量會隨時更改。所以我寫了一個腳本,只需從用戶輸入新名稱。從ksh中的另一個腳本採購.profile

貓tst.sh

echo "Enter the Result Location name where you would like your results to go." 
read RESL 
perl -pi.bak -e "s/([\s]+)RESLOC=\/result\/([\S]+)/$1 RESLOC=\/result\/${RESL}/g" /user/.profile 
cd /user 
. /user/.profile 
echo "$RESLOC" 

最後echo語句使輸出由用戶給定的值。 但是,當我在終端中執行了腳本之後執行echo $ RESLOC時,它會顯示舊值。

O /腳本的病人:

Enter the Result Location name where you would like your results to go. 
Release12 


/user/Release12 

當執行完成後,嘗試顯示RESLOC。

echo $RESLOC 
/user/Release11 

.profile文件已被Release12更新。但它沒有正確的來源。 請幫忙。

回答

1

當你運行tst.sh時,會產生一個新的shell進程,當它結束時,你的環境將返回到shell的前一個實例,即運行tst.sh的那個實例。

要修改當前shell中的環境,您需要輸入tst.sh;

. tst.sh 

這將在當前shell中運行tst.sh,而不是產生新的shell進程。