I'm new to bash shell scripting, and have come across a challenge. I know I can reload my ".profile" file by just doing:
. .profile
but I'm trying to execute the same in a bash script I'm writing and it is just not working. Any ideas? Anything else I can provide to clarify?
Thanks
The bash script runs in a separate subshell. In order to make this work you will need to source this other script as well.
Try this to reload your current shell:
Try this:
A couple of issues arise when trying to reload/source ~/.profile file. [This refers to Ubuntu linux - in some cases the details of the commands will be different]
Ad. 1)
Running this directly in terminal means that there will be no subshell created. So you can use either two commands:
or
In both cases this will update the environment with the contents of .profile file.
Ad 2) You can start any bash script either by calling
or
In the first case this will create a subshell that will not affect the environment variables of your system and they will be visible only to the subshell process. After finishing the subshell command none of the exports etc. will not be applied. THIS IS A COMMON MISTAKE AND CAUSES A LOT OF DEVELOPERS TO LOSE A LOT OF TIME.
In order for your changes applied in your script to have effect for the global environment the script has to be run with
command.
In order to make sure that you script is not runned in a subshel you can use this function. (Again example is for Ubuntu shell)
I hope this clears some of the common misunderstandings! :D Good Luck!
Try: