一.第一个shell脚本
因为工作原因,不得不学习一下shell,但是又因为用的不多,学了又忘,忘了又学。已经记不清是第几次再看了,这里把以前学习的东西做个笔记。
1.1shell的历史
要想全面的了解一个东西,对于他的历史,对它的历史的了解很有必要。想当初学复变函数时,为了弄清这些数学理论在整个数学中地位,也便于自己应该学到什么样的深度有所了解。买了一本数学史看。到现在来看,这个无心之举,确实让我颇有收获。
这里就不多说了,给个链接:http://www.ituring.com.cn/article/52223,shell的发展史的一个简介。如果读者想要了解更多的知识,可以去google一下。
1.2怎么配置用户登录的shell
在linux系统中,并不是每一种系统都默认有x图形视窗。但是每一种linux系统都有默认的shell。又因为shell有很多变种,每个人都有自己的喜好。可以按如下的步骤进行配置自己喜欢的shell。
每一个用户登录系统时,系统会自动的去读取/etc/passwd中的内容,这个内容是跟账户相关的。具体的解释,可以参考《鸟哥的linux私房菜》.这里给出该书的在线网址。http://cn.linux.vbird.org/ ,这里简要说明一下。
打开/etc/passwd文件,可以看到如下所示的内容。
root:x:0:0:root:/root:/bin/bash
wannbiao:x:1000:1000:wannbiao:/home/wannbiao:/bin/bash
文件保存着当前系统中的账号配置信息,每一个配置信息用分号隔开。
第一是用户名,如root和wannbiao。
第二个是密码,这里使用了一个x,早期的linux确实是将密码写在这个字段下,但是为了账号的安全,现在将密码迁移到了/etc/shadow里面了,然后这个字段就变成了x,表示一个未知数。
第三个,和第四个:分别表示UID和GID。
第五个:用户信息描述字段。
第六个:用户的家目录。
第七个:用户默认登录的shell。
可以看到我们只需要配置第七个字段就可以了。配置成什么样的shell呢?。查看目前系统里面安装的shell,
cat /etc/shells
配置里面如下:
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
然后将第七个字段修改保存,之后,退出重新登录即可。
除了通过文件查看当前用户的默认shell以外,还可以通过SHELL变量的值来查看。
echo $SHELL
1.3 作为语言的shell
Shell不仅可以执行用户键入的命令,还可以执行shell脚本,shell脚本按照shell语法进行编写。
注意:本文所述的shell语法是基于bash的。
1.3.1新建一个文本文档,命名为first.sh 。
文档内容为
echo ‘hello world!’
保存并退出
修改权限。在linux中要执行一个文件,需要可执行权限,而不是根据后缀。上面的first.sh文件。完全可以去掉后缀,命名为first。这里加上后缀只是便于人眼的识别。
运行下面的命令给first.sh加上可执行权限。
chmod +x first.sh
使用ls –l 查看文件权限。对于chmod 和ls命令的具体使用可以参考man手册和info手册,也可以自行百度。
运行文件。
在命令行下,键入如下命令:
./first.sh
就可以看到这个脚本的输出:hello world。
./first.sh命令表示:运行当前目录下的first.sh文件。
同样的,你还可以将first.sh加到PATH路径下,就可以直接键入first.sh进行运行了。
除了上述方法外,还可以通过如下命令,运行first.sh
sh ./first.sh
这个命令表示:重新启动一个shell,然后再这个shell里面运行first.sh
还可以通过下面的方法运行first.sh
source first.sh
这个命令表示:在当前shell中运行first.sh
当然source还可以直接替换成点号。即
. ./first.sh
注意两个点之间有空格。
这几种方法的异同: 除了source first.sh以外。其他的方法都是:启动一个新的shell来运行这个脚本。 source
first.sh 和 . ./first.sh(注意两个点之间有空格) 是直接在当前shell中运行这个脚本。