Shell 本身是一个用C语言编写的程序,用户的大部分工作都是通过Shell来完成的。
Shell的功能只是提供用户操作系统的一个接口。
狭义的Shell指的是命令行方面的软件,包括linux默认的bash.广义的Shell则包括图形界面的软件,因为图形界面其实也能够操作各种应用程序来调用内核工作。
Shell 初学者注意:在平常应用中,建议不要用root账号运行Shell。作为普通用户都无法破坏系统;但如果是root,只要敲几个字母,就可能导致灾难性的后果。
Shell有两种执行命令的方式:
1.交互式(命令行界面的Shell):解释执行用户的命令,用户输入一条,Shell就解释一条。
2.批处理:用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲。
注意:Shell脚本与编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译。
Shell是一种脚本语言,就必须有解释器来执行这些脚本。Linux上的脚本解释器有 bash,ksh,csh,zsh等。bash的内部命令共有40个。
???为什么要使用bash作为默认的Shell呢???
命令记忆能力(history):默认的命令记忆功能可以到达1000个,记录在主文件内的 .bash_history中;
命令与文件补全功能(Tab);
命令别名设置功能(alias);
作业控制,前台,后台控制;
通配符(*,?);
包含了自身的帮助功能;
可通过方向键快速查找和修改命令。
bash 已经“内置”了很多命令,例如 cd ,那我们怎么知道这个命令是来自外部命令(指的是其他非bash所提供的命令)或是内置在bash当中的呢?
答案:使用type 命令
语法:type [-tpa] name
参数:
type:不加任何参数时,type会显示name是外部命令还是bash 内置命令
-t :type会以下面这些字眼显示出它的意义:
file :表示为外部命令
alias :表示该命令为命令别名所设置的名称
builtin:表示该命令为bash内置的命令功能。
-p :如果后面接的name为外部命令时,才会显示完整文件名。
-a :会由PATH变量定义的路径中,将所有含name 的命令都列出来,包括alias
范例: