linux中是如何找到执行shell的命令

4次阅读

共计 780 个字符,预计需要花费 2 分钟才能阅读完成。

微信公众号:51 码农网
专业编程问答社区
www.51manong.com

用 ls 命令举例,在 linux 中,执行 ls 命令,会经过几个查找过程寻找到 ls 程序。
alias 中查找 alias 可以用来设置命令别名,例如

alias la='ls -lrt'
alias ls='ls  --color=auto'

如果在这里找到了,就会执行下去。如果没有找到,就会继续寻找下去

内置命令中查找
在 shell 中,如果是内置命令,则会直接执行,否则还会继续寻找下去。用 help 命令看有哪些内置命令。

[root@iz2ze720onwdpm0gqiky35z ~]# help
....
type [-afptP] name [name ...]
pwd [-LP]
echo [-neE] [arg ...]
....

通过 type 命令查看命令类型

[root@iz2ze720onwdpm0gqiky35z ~]# type pwd
pwd is a shell builtin

PATH 中查找
shell 中输入 ls 命令,首先它会从 PATH 环境变量中查找。看看 PATH 的内容:

[root@iz2ze720onwdpm0gqiky35z ~]# echo $PATH
/otyu/java/jdk1.7.0_75/bin:/otyu/java/jdk1.7.0_75/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

它会在这些路径下寻找 ls 程序,按照路径找到的第一个 ls 程序会被执行。我们在看一下 ls 命令的位置:

[root@iz2ze720onwdpm0gqiky35z ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

可以看出 ls 是在 /usr/bin/ 目录下的。如果将 ls 命令移到其他目录,执行 ls 命令,就提提示你没有安装这个程序或者没找到命令。

正文完
 0