OS X Run Shell Scripts From Finder

If you want a shell script to be executable from Finder then you only need to follow two steps. No additional helper apps are needed; some exist but don't bother.

  1. Rename the shell script extension from .sh to .command
  2. Make the file executable - Either via the Terminal: chmod +x file.command or by Get Info in Finder

When the file.command is double-clicked/command-o in Finder, the Terminal will pop up and you'll see the script executed as well as the output.

Note 1: It does not work to symlink a current .sh script and make the symlink end in .command

Here's an example script I use to mount my code repository since I'm having trouble with AutoFS caching and failing to reconnect.

Example File: code_repos.command

#!/bin/sh
sshfs adam@svn:/path/to/code_repos/ /Users/adam/ssh_mounts/code_repos -oreconnect,volname=code_repos

Example Terminal.app Output

Last login: Thu Feb 21 01:27:22 on ttys003
You have mail.
/Users/adam/Desktop/Scripts/sshfs/code_repos.command ; exit;
mosfet:~ adam$ /Users/adam/Desktop/Scripts/sshfs/code_repos.command ; exit;
logout

[Process completed]

Note 2:
Wherever you put the file, it will run with your home directory (ie: /Users/adam) as the current working directory.

To get around this, use the following line after the #!/bin/sh in your shell script. This will move the current working directory to the directory that contains your command file.

cd "`dirname "$0"`"

Exactly...

Exactly what I was looking for...Thanks! barrettmo