shell是一个C语言编写的程序,是用户和Linux沟通连接的桥梁,它提供界面为用户访问系统内核提供服务。它既是命令语言又是程序设计语言。所以学好shell的前提是掌握了Linux基本命令及衍生用法,特别是三剑客(grep、awk、sed)的使用。
我们常说的shell脚本是shell script,是为shell编写的脚本程序。
在Linux中可以查看系统中的shell种类
# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/sh和/usr/bin/sh为Bourne Shell
/bin/bash和/usr/bin/bash为Bourne Again Shell
当然也有其他应用下的shell,如/usr/bin/csh为C Shell、/usr/bin/ksh为K Shell以及/sbin/sh为Shell For Root。
sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。
bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。 与 Bourne Shell 完全兼容,并且在 Bourne Shell 的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。
csh(全称 C Shell): 是一种比 Bourne Shell更适合的变种 Shell,它的语法与 C 语言很相似。
ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容。
在一般情况下,我们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像?#!/bin/sh,它同样也可以改为?#!/bin/bash。
shell脚本文件命名一般为.sh为后缀,文件中#!/bin/bash为开头,是为了告诉系统指定的路径所指定的程序即是解释此脚本文件的 Shell 程序。
创建一个shell文件
vim myfirstshell.sh
你的第一个shell
#!/bin/bash
echo "Take the first step,is the first step to success!Believe yourself!"
写好保存wq
进入到shell保存的目录,给它添加可执行权限
chmod +x myfirstshell.sh
执行脚本
./myfirstshell.sh
?注意:一定要写成./myfirstshell.sh,其它二进制程序也一样。直接写 test.sh,linux 系统会去 PATH 环境变量里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统,就在当前目录找。
直接运行解释器,把shell脚本文件名作为参数,这种方法就不需要在shell脚本文件中第一行添加解释器信息,但一般为了规范还是得加上,也为了适应不同用户运行习惯
/bin/sh myfirstshell.sh
/bin/bash myfirstshell.sh
当然我一般
sh myfirstshell.sh
bash myfirstshell.sh