31

This question already has an answer here:

Show how you can add /home/<yourusername>/bin to the $PATH variable. Use $HOME (or ~) to represent your home directory.

marked as duplicate by Panther, Thomas Ward, Radu Rădeanu, falconer, mikewhatever Jan 8 '14 at 20:51

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 1
    Reopen Voters /home/<yourusername>/bin is a Special directory that gets automatically added to the $PATH after it's been created and ~/.profile is reloaded. The duplicate target is about adding generic directories to the path such as /mary/had/a/little/lamb. – WinEunuuchs2Unix Jun 11 '18 at 23:38
  • @WinEunuuchs2Unix So what? Why should this be reopened? Do the answers to the dupe no longer apply? In fact, the accepted answer to the dupe mentions this very directory, and provides the same snippet that's in the default ~/.profile! – muru Jun 12 '18 at 1:41
  • @muru The "so what" is that you don't need to add /home/YOURNAME/bin to the$PATH. It's done automatically. – WinEunuuchs2Unix Jun 12 '18 at 1:49
  • @WinEunuuchs2Unix again, does that mean the answers to the dupe can't be used? – muru Jun 12 '18 at 1:52
  • Reopen Voters: The only "special" part is that after you create this directory and start a login shell (or source ~/.profile), this gets added to the PATH. For all other cases, the answers to the dupe will have to be used. This is a dupe. – muru Jun 12 '18 at 1:54
47

To do that you need to type in your terminal:

export PATH="$HOME/bin:$PATH"

This change is only temporary (it works only in the current session of the shell). To make it permanent, add the line to your .bashrc file located in your home directory.

  • 2
    I would use /home/user_name rather then $HOME – Panther Jan 8 '14 at 18:27
  • 4
    It is the same. If you try "echo $HOME" you will probably see the folder /home/user_name... – Swordfish90 Jan 8 '14 at 19:51
  • $HOME is a variable and is thus ambiguous. IMO it is best to use the full path in scripts and when adding to your $PATH – Panther Jan 8 '14 at 19:54
  • 5
    @bodhi.zazen Your HOME is not guaranteed to by at the same location on different systems. For example, I use the same .bashrc on Linux and MacOS, and hard-coding the full path would not work. – Gauthier Aug 16 '17 at 11:34
23

Ubuntu (and Debian based distros) automatically add $HOME/bin to the PATH if that directory is present. You can check this in ~/.profile:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
  • 1
    In case ~/.profile is not loaded add this to your ~.bashrc: PATH="$HOME/bin:$PATH" – rubo77 Jul 13 '14 at 10:50
  • What does "-d" do? This actually prepends several ~/bin into $PATH if you have multiple logins. – sdaffa23fdsf Feb 11 '15 at 12:48
  • @sdaffa23fdsf "-d" is for a directory. To check its existence – Hakeem Wahab Mar 11 '15 at 8:58
  • @sdaffa23fdsf Do you have a documented example of the multiple ~/bin? In that case the ~/.profile script should be changed to check if ~/bin is already in the path before prepending it to $PATH. – WinEunuuchs2Unix Jun 12 '18 at 1:54

Not the answer you're looking for? Browse other questions tagged or ask your own question.