Where is a good permanent place to install custom bash scripts?

I'm about to install "leiningen" which is a bash script for the clojure programming language with a lot of usefulness... ...but I'm not sure where it is appropriate to -put- a executable script in the linux system so that it's permanently and stable-ly available.

I don't think that anywhere in /home makes sense, but I don't know which directory/directories are supposed to be used for that.

/usr/share?


(Note: ~ translates as /home/user in this post)

Personally, I put all of my custom-made system scripts in /usr/local/bin and all of my personal bash scripts in ~/bin. Very few programs I install place themselves in /usr/local/bin directory so it's not very cluttered and it was already in the $PATH variable on most of my machines.

To add /usr/local/bin to your system path (if it's not already there) add this to /etc/profile:

PATH=$PATH:/usr/local/bin
export PATH

To add ~/bin to your user's path add this to ~/.bash_profile:

PATH=$PATH:$HOME/bin
export PATH

Sometimes the default .bash_profile file will have an if statement that automatically adds ~/bin to $PATH if it exists, so create the ~/bin and open a new terminal to see if yours already does this.


/usr/local/ is really the right place, while /opt is really for third party applications; "/opt is reserved for the installation of add-on application software packages." This is part of the Filesystem Hierarchy Standard.

See http://www.pathname.com/fhs/pub/fhs-2.3.html for discussion on /opt.

For /usr/local/, it is for "use by the system administrator". Just don't forget about stuff in there -- document it.


Historically you'd use something like /opt. Anything is fine as long as it's updated in $PATH for the users who are supposed to have it (hence anything in /home being a bad idea).