シェルスクリプトは端末で実行されますが、シェルスクリプトファイルでは実行されません。

シェルスクリプトは端末で実行されますが、シェルスクリプトファイルでは実行されません。

重複の可能性:
「エクスポートされた」変数をbashスクリプトに保持するにはどうすればよいですか?

ファイルからスクリプトを実行する際に問題があります。コマンドラインに入力するとき

PATH=$PATH:/home/

その後、PATH適切に変更します。しかし、このファイルを実行すると:

#!/bin/sh
#provided by me

PATH=$PATH:/home/
echo "done"
exit 0

done印刷されましたがPATH変更されませんでした。なぜこれが起こるのですか?

答え1

環境変数の変更は、現在のプロセスと後続の子プロセスに適用されますが、親プロセスには適用されません。したがって、スクリプトを実行しても、そのスクリプトが実行されるシェルの環境変数には影響しません。source組み込みのシェルスクリプトを使用する必要があります.。つまり

. /path/to/script

これにより、現在のシェルは子プロセスを実行するのではなく、ファイル内のコマンドを実行します。

関連情報