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).