Homebrew, like Git, supports external commands. This lets you create new commands that can be run like:
brew mycommand --option1 --option3 formula
without modifying Homebrew’s internals.
External commands come in two flavors: Ruby commands and shell scripts.
In both cases, the command file should be executable (
chmod +x) and live somewhere in
An external command
extcmd implemented as a Ruby command should be named
brew-extcmd.rb. The command is executed by doing a
require on the full pathname. As the command is
required, it has full access to the Homebrew “environment”, i.e. all global variables and modules that any internal command has access to.
The command may
Kernel.exit with a status code if it needs to; if it doesn’t explicitly exit then Homebrew will return
A shell script for a command named
extcmd should be named
brew-extcmd. This file will be run via
exec with some Homebrew variables set as environment variables, and passed any additional command-line arguments.
||Where Homebrew caches downloaded tarballs to, by default
||The location of the Homebrew Cellar, where software is staged. This will be
||The directory containing Homebrew’s own application code.|
||Where Homebrew installs software. This is always the grandparent directory of the
||If installed from a Git clone, the repository directory (i.e. where Homebrew’s .git directory lives).|
Note that the script itself can use any suitable shebang (
#!) line, so an external “shell script” can be written for sh, bash, Ruby, or anything else.
All internal and external Homebrew commands can provide styled
--help output by using lines starting with
#: (a comment then
: character in both Bash and Ruby) which are then output by
For example, see the header of
brew services which is output with
brew services --help.
These commands have been contributed by Homebrew users but are not included in the main Homebrew repository, nor are they installed by the installer script. You can install them manually, as outlined above.
Note they are largely untested, and as always, be careful about running untested code on your machine.
Check if there is a new upstream version of a formula.
README for more info and usage.
brew tap homebrew/livecheck
gem package into a self-contained Homebrew Cellar location: https://github.com/sportngin/brew-gem
Note this can also be installed with
brew install brew-gem.
Get Growl notifications for Homebrew: https://github.com/secondplanet/homebrew-growl
Simple support for starting formulae using launchctl, has out of the box support for any formula which defines
startup_plist (e.g. mysql, postgres, redis u.v.m.): https://github.com/Homebrew/homebrew-services
brew tap homebrew/services