shell介绍
目录
一、什么是shll
shell的工作过程:
shell外壳
kernel内核
1.用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。
2.shell最重要的功能是命令解释,从这种意义上来说,shell是一个命令解释器。Linux系统中的所有可执行文件都可以作为shell命令来执行。
二、Linux中shell执行的命令类型
1.Linux基本命令: 存放在/bin /sbin目录下。
2.内置命令:出于效率考虑,将一些常用命令的解释程序构造在Shell内部,构造在Shell内部的命令。例如 echo
3.实用命令:存放在/usr/bin /usr/sbin /usr/local/bin等目录下的实用程序。
4.用户程序:用户程序经过编译生成可执行文件后,也可作为shell命令运行,如用户自己用c语言、python语言等编写的一些程序。
5.shell脚本:由shell语言编写的批处理文件,如用shell语言编写的类似windows中批处理的程序。
(1) Linux基本命令:存放在/bin /sbin目录下 比如我们熟悉的clear命令,就在bin这个目录下
/bin目录:存放系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/sbin目录:一般是指超级用户指令。主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等
(2)内置命令:构造在Shell内部的命令。例如 echo
(3)实用命令:存放在/usr/bin /usr/sbin /usr/local/bin等目录下的实用程序
/usr/bin目录是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
/usr/sbin 放置一些用户安装的系统管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
(4)用户程序:用户自己用c语言、python语言等编写的一些程序
(5)shell脚本:用shell语言编写的类似windows中批处理的程序。
三、shell命令的执行顺序
1.当用户提交了一个命令后,Shell首先判断它是否为内置命令,如果是就通过Shell内部的解释器将其解释为系统功能调用并转交给内核执行。
2.若是外部命令或实用程序就试图在硬盘中查找该命令并将其调入内存,再将其解释为系统功能调用并转交给内核执行。
四、shell命令查找
用户给出了命令的路径(绝对路径或相对路径),Shell就沿着用户给出的路径查找,若找到则调入内存,若没有则输出命令没发现的提示信息。
用户没有给出命令的路径,Shell就在环境变量PATH所制定的路径中依次进行查找,若找到则调入内存,若没找到则输出提示信息。
例子:如果新装的系统,运行一些很正常的诸如:shutdown的命令时,提示:bash:command not found。
解决办法:首先就要考虑root 的$PATH里是否已经包含了这些环境变量。
可以查看PATH,如果是:PATH=$PATH:$HOME/bin则需要添加成如下:
PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
五、shell的版本(只做了解即可)
Bash、Korn、tcsh
例子:查看自己系统中包含的shell类型
ls -l /bin/*sh
六、shell变量的定义和引用
shell变量的定义:可类比python中的变量赋值。
例子:定义变量a并赋值为hello world
a=”hello world”
例子: 引用a变量
echo $a
例子:将a变量设置为全局变量
例子:显示当前shell的PID
例子:在shell中调用子shell
使用bash命令后,出现一个新的bash子进程。
-今天所学
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。