Where should shell tools be installed? [duplicate]

The Filesystem Hierarchy Standard is followed in Linux and other Unix based OSes, and OS X follows this too, to a large extent. The /private folder is where basically your OS X core resides and the /etc and /var folders are merely symbolic pointers to /private/etc and /private/var respectively. You can verify this by using readlink as readlink /etc.

The /opt folder is for additional user applications and so is /usr/local, and you can choose to install to either one of them. It really doesn't matter (as long as you take care of adding to your paths appropriately) and the main intent is to keep it insulated from operating system upgrades (which will overwrite stuff in, say, /bin).

Oftentimes, the following "loose convention" is adopted:

  • if the package/application follows unix standards, then install it to /usr/local/. There will be no surprises in the package and you can definitely expect a sub-directory structure like bin, etc, include, share, and so on.

  • if the software comes packaged as a standalone application in which the sub-directory structure is arbitrary, you simply install it to /opt. On my machine, I have my VPN, cisco installed in /opt and it has the following directories: anyconnect, hostscan, vpn. None of these are unix compliant folders and installing it to /usr/local would not be a good idea.

They both have their "advantages" and "disadvantages", depending on how you view it and what your familiarity with unix is.

  • Installing to /usr/local is "convenient" in that if you simply add /usr/local/bin to your path, everything else is set and you don't need to modify anything if you add a new application. On the other hand, if you need to remove something, it's a pain because all programs are clumped together and you don't remember which binaries were installed for application X and which ones for application Y.

  • Installing to /opt/programX will require you to manually add it to the path and perhaps setup symlinks, but removing an application is convenient, because you simply need to remove the folder and you're done.