shell 命令路径:PATH

shell下运行用户自己编译的程序,因为程序的存放路径不在PATH指定的官方路径中,所以shell也就无法通过一个命令名字来找到实际程序的存储位置。此时你就需要告诉Bash这些程序的实际路径名,而不仅仅是一个简单的文件名:

wit@pc:/home/hello# ls
a.out  hello.c
wit@pc:/home/hello# a.out
a.out: command not found
wit@pc:/home/hello# ./a.out 
hello zhaixue.cc
wit@pc:/home/hello# /home/hello/a.out 
hello zhaixue.cc
wit@pc:/home/hello#

当然,你也可以将/home/hello这个路径追加到PATH环境变量中,修改~/.bashrc文件,在文件的末尾添加一句:

export PATH="$PATH:/home/hello"

上面一条命令,将可执行二进制文件a.out的实际存储路径/home/hello添加到了系统环境变量PATH中,然后用户就可以在任何路径下去直接通过文件名a.out就可以运行这个可执行文件了:

wit@pc:/home/hello# vi ~/.bashrc 
wit@pc:/home/hello# source ~/.bashrc 
wit@pc:/home/hello# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/hello:/home/hello
wit@pc:/home/hello# a.out 
hello zhaixue.cc
wit@pc:/home/hello# cd /
wit@pc:/# a.out 
hello zhaixue.cc
wit@pc:/#

Bash会依次到PATH指定的路径下寻找a.out这个可执行文件,直到找到为止。找到后就和运行其他命令一样,直接将可执行文件加载到子进程的地址空间就可以运行了。

《Linux三剑客》视频教程:Linux下开发工具vim、Git、Makefile、autotools、qemu、debug精讲,从零开始一步一步写项目的Makefile,提供企业级Makefile模板,Git操作实战,vim从新手到高手,一步一步打造类似Source Insight的IDE!详情点击:王利涛老师个人淘宝店:Linux三剑客