If we have a program start.sh, we can execute it with the sh start.sh. But we could execute it giving permission with chmod and run ./start.sh in the command line. What is the difference between those two ways of executing a bash/sh script.
Asked
Active
Viewed 42 times
1 Answers
1
They both execute shell script but there is some little difference:
sh
will use will use the sh interpreter even if a differenter interpreter was indicated in the begining of the file like #!/bin/bash
this can be useful if you want your script to be executed using always the same interpreter
for ./start.sh
the shell will try to execute as an executable file so the script need a shebang like #!/bin/bash
so ./start.sh
is more flexible since you can use the interpreter you want

Saxtheowl
- 1,739
- 2
- 10
- 20
./start.sh
will still work even without one. I was just testing and I can't quite figure out if it runs using whatever the default$SHELL
is or not. When I was running a bash shell, it ran withbash
but from azsh
anddash
shell, it ran with/bin/sh
. In any case, the main point is that even without a shebang, an executable file containing shell commands can be run with./script.sh
. – terdon Mar 17 '23 at 11:19