Shell命令

Shell命令分为两种:

  • Shell自带的命令称为内置命令, 它在Shell的内部可以通过函数来实现, 当Shell启动后, 这些命令所对应的代码(函数体代码)也被加载到内存中, 所以使用内置命令是非常快速的;
  • 更多的命令是外部的应用程序, 一个命令就对应一个应用程序. 运行外部命令要开启一个新的进程, 所以效率上要比内置命令差很多.

用户输入一个命令后, Shell先检测该命令是不是内置命令, 如果是就执行; 如果不是就检测有没有对应的外部程序: 有的话就转而执行外部程序, 执行结束后再回到Shell; 没有的话就报错, 告诉用户该命令不存在.

内置命令

所谓Shell内置命令, 就是由Bash自身提供的命令, 而不是文件系统中的某个可执行文件.

可以使用type来确定一个命令是否是内置命令:

type <command>

外部命令

外部命令就是一个外部的应用程序.

用户在Shell中输入一个外部命令后, 只是将可执行文件的名字告诉了Shell, 但是并没有告诉Shell去哪里寻找这个文件. 难道Shell要遍历整个文件系统, 查找每一个目录吗?

Shell中有一个叫PATH的环境变量, 该变量保存了Shell对外部命令的查找路径, 如果在这些路径下找不到同名的文件, Shell也不会再去其它路径下查找了, 它就直接报错.

我们可以使用echo命令输出PATH变量的值:

echo $PATH

当然, 我们也可以修改PATH变量给它增加另外的路径.

注意

PATH变量的各个路径之间用:分隔.

Shell命令基本格式

Shell命令的基本格式:

command [选项] [参数]

[]表示可选的, 也就是可有可无的.

有些命令不写选项和参数也能执行, 有些命令在必要的时候可以附带选项和参数.