linux的shell脚本就是windows的bat脚本,也就是通常所说的批处理。更简洁地说,就是很多命令的结合体,就像编程一样。
windows脚本的扩展名是.bat,而linux脚本的扩展名则是.sh
centos在编写shell脚本的文件最上边,需要加上#!/bin/sh(bash)这里表示的是使用sh(bash)解释器。自己写的语言需要与解释器相匹配。
sh和bash可以认为是一个东西,因为bash内部是连接着sh的,因此两个都可以写。
还有其他不同的解释器,如zsh、ash、chs、tcsh,这些一般用在其他版本,如ubantu等等。但是一般系统都会默认用该系统适合的解释器,有的时候shell脚本头部不加显示器也不会出错。但是最好都加上,就像c语言都得加mian函数一样。
写一段shell脚本文件:
首先需要创建应该shell脚本文件:
touch hello.sh
这样就创建好了
然后vim hello.sh打开这个文件。
输入:
接下来就是执行了,执行命令的方式有三种:
①:
这里是利用bash解释器,去解释这个shell脚本,这样bash就会帮我们执行这个shell脚本文件。
②:
这里就是赋予可执行文件的权限,然后通过./去执行这个文件。
注意:可执行文件要执行,都得加个路径。否则会当做命令执行。
③:
可以通过source 文件名(可以直接写文件名source hello.sh这样也可以就如同直接bash一样)执行shell文件。
也可以通过. 文件名(中间是有空格的)执行shell文件。
这两个命令是一个意思,只是他们来源于不同解释器。被bash借鉴使用了。
那么是什么意思呢?
前两个执行方式其实是创建了一个子shell进程,这个子shell进程继承了父shell进程,然后由这个子shell进程一个一个执行shell文件内的命令,再带回父shell进程。但是子shell进程如果修改执行了修改环境变量等关键信息,这些父shell进程是不会响应的。
接下来就是source和.命令,这个两个命令是在父shell进程中直接执行shell文件。因此source和.通常会用来更新某些配置文件从而不用重启电脑,如:profile(环境变量文件)(解释一下,这些配置文件其实也是可执行文件,内部都是命令,如profile内部都是修改配置文件的命令export,这些命令只有被父shell进程执行后才会生效,在子shell进程执行是没有用的。)