Linux下的交互式接口分为两种:
GUI: 图形化界面(桌面环境)
CLI:命令行界面(shell)

shell

Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
shell也被称为LINUX的命令解释器(command interpreter),Shell 本身是一个程序。将用户输入的命令行拆解为”命令名“与”参数“。接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化,然后将刚才解析出来的参数传给该程序并执行
shell是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能
由于Shell本身是个程序,所以它可以被任何用户自己开发的各种Shell所代替

GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与sh兼容

Linux shell执行命令的过程:
当用户在终端输入命令回车后,shell程序回去查找输入命令对应的可执行程序或代码,并由其分析后提交给内核分配资源运行起来

shell分为内部命令和外部命令
内部命令:shell自带的,用户登陆后自带加载并常驻内存中,性能好
外部命令:存放在文件系统中的可执行程序文件,执行才从磁盘加载至内存,执行结束后从内存中删除

命令执行的优先顺序:

当用户的输入是以绝对路径或相对路径的方式,直接执行,找不到文件直接报错
当用户输入的是非绝对或相对路径:
a.查找命令hash
b.hash没有,查找别名
别名找不到,再判断内部命令还是外部命令
内部命令:直接从内存中执行
外部命令:查找系统变量 $PATH 下的路径有没有对应名字的可执行文件(仅执行找到的第一个)
还找不到报错