# Ubuntu – What are “$PATH” and “~/bin”? How to have personal scripts environment-variables What is $PATH?

How can I have commands/programs which are only available for me?
I have seen this path ~/bin mentioned before, but what is it used for, and how do I use it?

$PATH is an environment variable used to lookup commands. The ~ is your home directory, so ~/bin will be /home/user/bin; it is a normal directory. When you run "ls" in a shell, for example, you actually run the /bin/ls program; the exact location may differ depending on your system configuration. This happens because /bin is in your$PATH.

To see the path and find where any particular command is located:

$echo$PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$which ls # searches$PATH for an executable named "ls"
/bin/ls
$ls # runs /bin/ls bin desktop documents downloads examples.desktop music pictures ...$ /bin/ls      # can also run directly


To have your own private bin directory, you only need to add it to the path. Do this by editing ~/.profile (a hidden file) to include the below lines. If the lines are commented, you only have to uncomment them; if they are already there, you're all set!

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then PATH="$HOME/bin:$PATH" fi  Now you need to create your ~/bin directory and, because .profile is run on login and only adds ~/bin if it exists at that time, you need to login again to see the updated PATH. Let's test it out: $ ln -s $(which ls) ~/bin/my-ls # symlink$ which my-ls
/home/user/bin/my-ls
$my-ls -l ~/bin/my-ls lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls$ my-ls          # lookup through $PATH bin desktop documents downloads examples.desktop music pictures ...$ ~/bin/my-ls    # doesn't use \$PATH to lookup