2010-12-07 14 views
2

内から動作していません私は期待している)ソースは、私はシェルスクリプトに以下の行を持っているシェルスクリプト

しかし、シェルスクリプトと同じフォルダから、私はちょうどシェルからコマンドを実行すると、期待どおりに動作します。

スクリプト内からディレクトリを変更することはありません。実際には、ここでのスクリプトは次のとおりです。

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にからの変更を管理し、Gitのリポジトリに格納するスクリプトを使用します。

ソーススクリプト内でソースコマンドが動作しないのはなぜですか?

+2

あなたもスクリプトをソースしていますか? 'source thescriptname'?さもなければ、スクリプトは新しいシェルで実行されており、 'source bash_profile'コマンドはその新しいシェル(スクリプトの最後で終了します)に影響します。 –

+1

これを答えに入れて、私は受け入れます。私は "source theScript.sh"と入力するのではなく、スクリプト名 "theScript.sh"をタイプするだけでスクリプトを実行していました。ありがとう! – cmcculloh

+1

あなたは@バートと言うか、彼は決してそれを見ないかもしれません。 –

答えて

10

あなたもスクリプトを調達していますか:source thescriptname?それ以外の場合、スクリプトは新しいシェルで実行されており、source bash_profileコマンドはその新しいシェル(スクリプトの最後に存在する)に影響します。

関連する問題