(Bash)シェルスクリプトで使用すると、CD $ Variableは機能しません。

(Bash)シェルスクリプトで使用すると、CD $ Variableは機能しません。

ファイル名: test.sh

#!/bin/bash

ZDir="$(echo /usr/src)"
cd "$ZDir"

スクリプトを実行すると、./Test.shコマンドはcd何もしません。 bash端末で直接これを実行しようとすると、魅力のように動作します。また、スクリプトの内部と外部の両方で使用されるエコーは正しい値(/usr/src)を返します。

なぜこれが起こるのか知っている人がいますか?繰り返しますが、cd $ZDirこれはスクリプトの外部の端末で直接使用すると機能します。

編集:「重複した」回答が見つかりませんでしたが、G-Manユーザーが何をすべきかについて正確に回答しました。 && を含め、実行する必要がある次のコマンドを入力すると機能します。これには関数を使用することもできます... cdZDir() { cd /usr/src;make;install }

その後、関数を直接呼び出すだけです。

答え1

cd影響を与える現在のシェルとその子孫。シェルスクリプトは新しいシェルプロセスで実行されるため、cdスクリプトの a はスクリプトの実行の残りの部分と実行されるすべてのプログラムにのみ影響します。

  • pwdのような命令を入力するとls スクリプトを入力して、その後、成功したcdことがわかります。cdスクリプトから。
  • と言うと、. ./Test.sh現在の(注)シェルプロセスはTest.sh その中にあるコマンドを読み込み実行します。これにより、現在の(注)シェルプロセスが新しいディレクトリに配置されることがわかります。

関連情報