I am fairly new to running scripts in UNIX/Linux. I have a .env file containing environment information and a .sh script containing folder creations etc for that environment.
How would I run the script on the environment contained in the .env file or how could I point the script to the target environment?
Would it be as easy as:
bash 'scriptname.sh' 'filename.env'
You need to source the environment in the calling shell before starting the script:
source 'filename.env' && bash 'scriptname.sh'
In order to prevent polution of the environment of the calling shell you might run that in a sub shell:
(source 'filename.env' && bash 'scriptname.sh')
. ./filename.env
sh scriptname.sh
First command set the env. variables in the shell, second one will use it to execute itself.
Create the a file with name maybe run_with_env.sh with below content
ENV_FILE="$1"
CMD=${@:2}
set -o allexport
source $ENV_FILE
set +o allexport
$CMD
Change the permission to 755
chmod 755 run_with_env.sh
Now run the bash file with below command
./run_with_env.sh filename.env sh scriptname.sh