What is the difference between "source script.sh" and "./script.sh"?
What is the difference between source <script>
and ./<script>
?
Solution 1:
source script.sh
runs the script within the current process, thus all variable assignments are preserved as variables even after the script finishes (and don't have to be explicitly export
'd).
./script.sh
just runs the script in a subprocess, and any variables which are assigned disappear after the script is done.
Solution 2:
source script will change your current environment, ./script will not.
(EDIT: script has to be executable to use ./)