2010-12-07 86 views
2

我有一個shell腳本以下行:源不是從shell腳本中工作

source bash_profile 

它沒有錯誤,但它不會做任何事情,我可以看到無論是(這不是重裝我的別名一樣我期望)

但是,從shell腳本所在的文件夾中,如果我只是從shell運行命令,它就像我所期望的那樣工作。

我從不改變腳本內的目錄。事實上,這裏是腳本:

direction="to" 
destination="local" 
if [ -n $1 ] 
    then 
    direction=$1 
fi 
if [ -n $2 ] 
    then 
    destination=$2 
fi 

command=$direction$destination 

if [ $command = "fromlocal" -o $command = "togit" ] 
    then 
    cp /c/Program\ Files/Git/etc/bash_profile /d/automata/flgitscripts/bash_profile 
else 
    cp /d/automata/flgitscripts/bash_profile /c/Program\ Files/Git/etc/bash_profile 
fi 

source /c/Program\ Files/Git/etc/bash_profile 

我使用腳本來管理變更,並從.bash_profile中,並把它們存儲在一個混帳回購協議。

爲什麼source命令不在shell腳本中工作?

+2

您是否也在採購腳本:`source thescriptname`?否則,腳本運行在一個新的shell中,並且`source bash_profile`命令影響新的shell(它在腳本的末尾退出)。 – 2010-12-07 19:12:32

回答

10

您是否正在採購腳本:source thescriptname?否則,該腳本將在新shell中運行,並且source bash_profile命令會影響該新shell(該腳本將在腳本結尾處退出)。