First you need to discover where the path is set, and then
update it. For your local account, it’s probably set in
~/.profile or ~/.bash_profile. Find the file
with grep -l PATH
~/.[^.]*
and edit it with your favorite editor; then
source the file to have the change take effect
immediately.
If you are root and you need to set the path for the entire system, the basic procedure is
the same, but there are different files in /etc
where the $PATH
may be set, depending
on your operating system and version. The most likely file is
/etc/profile, but /etc/bashrc, /etc/rc,
/etc/default/login, ~/.ssh/environment, and the PAM
/etc/ environment files are also possible.
The grep -l PATH~/.[^.]*
command is interesting because of the nature of shell wild-card
expansion and the existence of the /. and /.. directories. See Showing All Hidden (dot) Files in the Current Directory, for
details.
The locations listed in the $PATH
have security implications, especially
when you are root. If a world-writable directory is
in root’s path before the typical directories
(i.e., /bin, /sbin), then a local user can create
files that root might execute, doing arbitrary
things to the system. This is the reason that the current directory (.)
should not be in root’s path either.
To be aware of this issue and avoid it:
Make root’s path as short as possible, and never use relative paths.
Consider setting explicit paths in shell scripts run by root.
Consider hardcoding absolute paths to utilities used in shell scripts run by root.
Put user or application directories last in the $PATH
,
and then only for unprivileged users.
18.119.28.108