How do I make this file.sh executable via double click?
Remove the extension altogether and then double-click it. Most system shell scripts are like this. As long as it has a shebang it will work.
By default, *.sh
files are opened in a text editor (Xcode or TextEdit). To create a shell script that will execute in Terminal when you open it, name it with the “command” extension, e.g., file.command
. By default, these are sent to Terminal, which will execute the file as a shell script.
You will also need to ensure the file is executable, e.g.:
chmod +x file.command
Without this, Terminal will refuse to execute it.
Note that the script does not have to begin with a #!
prefix in this specific scenario, because Terminal specifically arranges to execute it with your default shell. (Of course, you can add a #!
line if you want to customize which shell is used or if you want to ensure that you can execute it from the command line while using a different shell.)
Also note that Terminal executes the shell script without changing the working directory. You’ll need to begin your script with a cd
command if you actually need it to run with a particular working directory. E.g. you can use cd "$(dirname "$0")"
to set the current working directory to the directory where your shell script lies.
You can just tell Finder to open the .sh
file in Terminal:
- Select the file
- Get Info (cmd-i) on it
- In the "Open with" section, choose "Other…" in the popup menu
- Choose Terminal as the application
This will have the exact same effect as renaming it to .command
except… you don't have to rename it :)