Adding a new executable to the PATH environment variable?
I'm trying to install this library called phantomjs.
The instructions include this line:
http://code.google.com/p/phantomjs/wiki/BuildInstructions
For convenience, copy the executable bin/phantomjs.app/Contents/MacOS/phantomjs to some directory in your PATH.
How do I do this?
To find out what's in your PATH, open a Terminal window and run this command: echo $PATH
. The output is a colon-separated list of directories, the contents of which you can run without specifying the full path.
Since /usr/bin is in my path, I can run the w
command simply by typing w
instead of the full /usr/bin/w
.
Also, you don't have to move the executable into one of the listed PATH directories. Other options include
- Leave the executable where it is, and symlink to it from one of the PATH directories
- Add a directory to your PATH by explicitly setting it in a login script for your shell
The cleanest way to achieve this would be to symlink the binary in the /usr/local/bin directory (which is included in PATH by default). You might need to create this directory if it doesn't exist yet. You can check to see if these directories are already in your PATH by opening Terminal.app and typing:
echo $PATH
This will generate a colon delimited listing of all directories in your PATH.
If the directories /usr/local or /usr/local/bin do not exist yet, execute the following:
sudo mkdir -p /usr/local/bin
Symlink the binary, replace (/Applications) with the path to phantomjs.app if it differs:
sudo ln -s /Applications/phantomjs.app/Contents/MacOS/phantomjs /usr/local/bin
Now you should have no problems executing phantomjs from the command-line.
While symlinking the file from another directoy works, I prefer to actually copy/move the file to usr/local/bin
, to not have it "twice".
cp bin/phantomjs.app/Contents/MacOS/phantomjs /usr/local/bin
Going back to the root of your issue, if you are installing phantomjs you can use npm to make it easier.
If you do then you can just run:
npm install -g phantomjs-prebuilt
which will install the binary inside of the proper bin directory. (the -g flag indicates to npm that the package is to be installed globally)