计算机网络/计算机科学与应用/系统/运维/开发

Linux 内部命令和外部命令

内部命令和外部命令的划分

内部命令:只要Shell被执行,内部命令就自动载入内存,用户可以直接使用,如cd、pwd、echo命令等

外部命令:考虑到运行效率等原因,不可能把所有的命令都集成在Shell中,更多的Linux命令是独立于Shell之外的,这些就称为外部命令,如cp、ls等都属于外部命令


每个外部命令都对应了系统中的一个可执行的二进制程序文件,这些二进制程序文件主要存放在下列目录中

普通命令:/bin、/usr/bin和/usr/local/bin

管理命令:/sbin、/usr/sbin和/usr/local/sbin


普通命令是指所有用户都可以执行的命令,而管理命令则只有管理员root才有权限执行


Linux系统默认将外部命令程序文件的存放路径保存在一个名为PATH的环境变量中,执行“echo $PATH”命令可以显示出PATH变量里保存的目录路径(路径之间用“:”间隔)


[root@node-a shell]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

当用户输入命令并执行时,Shell首先检查命令是否是内部命令,若不是,Shell就会从PATH变量所保存的这些路径中寻找外部命令所对应的程序文件。



如果用户每执行一条命令都要去PATH变量中查找程序文件路径,那么势必会影响命令执行效率,因而Linux系统会将用户在当前Shell中所执行的外部命令程序文件路径缓存下来,这样当再次执行同样的命令时,就会直接从缓存中调用,而无须在PATH变量中查找


[root@node-a shell]# hash
hitscommand
   5/usr/bin/date
   2/usr/bin/cat
   2/usr/bin/vim
   1/usr/bin/diff
   1/usr/bin/stat
   3/usr/sbin/hwclock
   2/usr/bin/ls
   4/usr/bin/clear


只有惜缘,才有缘分;只有惜友,才有友谊。

评论

^