I want to activate a virtual env in shell script, so I write a simple script as follow:
#!/bin/bash
source ~/env/lib/bin/activate
#nohup python mock_run.py
#echo $! > save_pid.txt
I start the script with sh start.sh
, but I got error as follow:
start.sh: 3: start.sh: source: not found
I run source ~/env/lib/bin/activate
is ok, so why can not in shell script?
Note that the shebang line:
#!/bin/bash
is not in effect when you invoke the script with
sh script.sh
The shebang is in effect only if you call the script directly, like a binary.
You need to either:
chmod +x script.sh
./script.sh
to make the shebang line working, or call it explicitly with bash:
bash script.sh
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With