Linux Shell Environment Path

From Free Knowledge Base- The DUCK Project: information for everyone
Jump to: navigation, search

The current path environmental variable can be viewed

echo $PATH

capital letters on PATH. Want to know if a command is in $PATH?

which command

Need to add a directory path to the shell path statement for your own scripts?

  • Per user shell
vi ~/.profile

Look for the line with a comment about "set PATH so it includes user's private bin directories" and add your custom path in there like this: ( added /myscripts to the path )

PATH="$HOME/bin:$HOME/.local/bin:/myscripts:$PATH"

note: In the past we used ~/.bash_profile and had to include "export PATH"

Look at /etc/profile which is used for each new user directory created. It has a script still looking for .bash_profile so it appears that if a .bash_profile is created, the script will identify its existence and use it.

Note: Recommend you use the .bashrc method mentioned below this note! It seems to work very well on most systems.

IF THAT DOESN'T WORK - THIS WILL ...

vi ~/.bashrc
PATH="/myscripts:$PATH"

Note: the .bashrc is executed every time a bash shell is opened and .bash_profile only if it's a login shell.

If you "sudo bash" then your custom path directories have vanished! /etc/sudoers is configured to replace your PATH with a default one. You have a couple options, either remove Defaults secure_path= from /etc/sudoers or add your custom directory to the secure_path in /etc/sudoers. For some stupid reason when you visudo the /etc/sudoers file opens in nano! stupid!

sudo update-alternatives --config editor

Will allow you to fix the stupid editor default (idiots at Ubuntu and Mint don't you think nano is for dosy people?)

sudo visudo

Adding to the PATH for ALL USERS can be done like this:

  • edit /etc/profile, put the modified PATH in there.
PATH=$PATH:/your/path; export PATH

Add that line to the bottom of /etc/profile


keywords: bash path bashrc bash_profile bash_history command set