当你在shell命令行界面中输入一个外部命令时(参见第5章),shell必须搜索系统来找到对应
的程序。PATH环境变量定义了用于进行命令和程序查找的目录。在本书所用的Ubuntu系统中,
PATH环境变量的内容是这样的:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/usr/games:/usr/local/games
$
输出中显示了有8个可供shell用来查找命令和程序。PATH中的目录使用冒号分隔。
如果命令或者程序的位置没有包括在PATH变量中,那么如果不使用绝对路径的话,shell是没
法找到的。如果shell找不到指定的命令或程序,它会产生一个错误信息:
$ myprog
-bash: myprog: command not found
$
问题是,应用程序放置可执行文件的目录常常不在PATH环境变量所包含的目录中。解决的
办法是保证PATH环境变量包含了所有存放应用程序的目录。
可以把新的搜索目录添加到现有的PATH环境变量中,无需从头定义。PATH中各个目录之间
是用冒号分隔的。你只需引用原来的PATH值,然后再给这个字符串添加新目录就行了。可以参
考下面的例子。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/usr/games:/usr/local/games
$
$ PATH=$PATH:/home/christine/Scripts
$
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/
games:/usr/local/games:/home/christine/Scripts
$
$ myprog
The factorial of 5 is 120.
$
将目录加到PATH环境变量之后,你现在就可以在虚拟目录结构中的任何位置执行程序。 $ cd /etc
$
$ myprog
The factorial of 5 is 120
$
窍门 如果希望子shell也能找到你的程序的位置,一定要记得把修改后的PATH环境变量导出。
程序员通常的办法是将单点符也加入PATH环境变量。该单点符代表当前目录(参见第3章)。
$ PATH=$PATH:.
$
$ cd /home/christine/Old_Scripts
$
$ myprog2
The factorial of 6 is 720
$
对PATH变量的修改只能持续到退出或重启系统。这种效果并不能一直持续。在下一节中,
你会学到如何永久保持环境变量的修改效果。