ファイルからスクリプトを実行する際に問題があります。コマンドラインに入力するとき
PATH=$PATH:/home/
その後、PATH
適切に変更します。しかし、このファイルを実行すると:
#!/bin/sh
#provided by me
PATH=$PATH:/home/
echo "done"
exit 0
done
印刷されましたがPATH
変更されませんでした。なぜこれが起こるのですか?
答え1
環境変数の変更は、現在のプロセスと後続の子プロセスに適用されますが、親プロセスには適用されません。したがって、スクリプトを実行しても、そのスクリプトが実行されるシェルの環境変数には影響しません。source
組み込みのシェルスクリプトを使用する必要があります.
。つまり
. /path/to/script
これにより、現在のシェルは子プロセスを実行するのではなく、ファイル内のコマンドを実行します。