6.2 Where Commands Reside: The PATH Variable

When you type a command into the shell, it has to find the program

on your hard disk before executing it. If the shell had to look all

over the disk, it would be very slow; instead, it looks in a list of

directories contained in the PATH environment variable. This list of

directories makes up the shell’s _search path;_ when you enter a

command, it goes through each one in turn looking for the program

you asked to run.

You may need to change the PATH variable if you install programs

yourself in a non-standard location. The value of PATH is a

colon-separated list of directories. The default value on Debian

systems is as follows:

/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

/

/

/

/

This value is defined in the file /etc/profile and applies to all

users. You can easily change the value, just as you can change any

environment variable. If you type the command ls, the shell will

first look in

/usr/local/bin; ls isn’t there, so it will try /usr/bin; when that

/fails,

it will check /bin. There it will discover /bin/ls, stop its search,

and execute the program /bin/ls. If /usr/bin/X11/ls existed (it

doesn’t, but pretend), it would be ignored.

You can see which ls the shell is going to use with the type

command. type ls will give you the answer /bin/ls. Try it yourself.

Try asking where type itself resides:

$ type type

type is a shell builtin

type isn’t actually a program; it’s a function provided by the

shell. However, you use it just like an external program.

There are a number of commands like this; type man builtins to read

the man page describing them. In general, you don’t need to know

whether a command is a builtin or a real program; however, builtins

will not show up in the output of ps or top because they aren’t

separate processes. They’re just part of the shell.

Debian GNU/Linux : Guide to Installation and Usage · 第 97 / 193 题