簡単な bash スクリプトの質問です。笑わないでください。私のスクリプトはディレクトリを変更するだけです:
echo on;
echo "running script";
CURRENT_DIR=.;
cd ..;
pwd;
エコーでディレクトリが変更されるのを確認できますが、終了しても端末は同じディレクトリのままです。任意のヒント?
スクリプトを実行するbash
と、独自のシェルで実行されます。つまり、現在の作業ディレクトリを含む独自のシェル環境があることを意味します。スクリプト内にいる場合cd
、そのスクリプトはその新しい現在のディレクトリで動作します。ただし、サブシェルはそれに触れないため、完了すると、ユーザーレベルのシェルが存在する現在のディレクトリにとどまります。
現在のシェル環境に影響を与えたい場合、1 つの方法は次のように実行すること.
です。
. my_script
これは実行に似てsh my_script
いますが、現在のユーザー シェルの環境内で動作します。