Shell 是一个用 C 语言编写的程序,它是用户运用 Linux 的桥梁。Shell 既是一种指令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序供给了一个界面,用户经过这个界面访问操作体系内核的服务。
Ken Thompson 的 sh 是榜首种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
一、Shell 脚本
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 一般都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
因为习惯的原因,简练起见,本文呈现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。
二、Shell 环境
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解说履行的脚本解说器就能够了。
Linux 的 Shell 种类很多,常见的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
三、榜首个shell脚本
打开文本编辑器(能够运用 vi/vim 指令来创立文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本履行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。
输入一些代码,榜首行一般是这样:
#!/bin/bash
echo "Hello World !"
#! 是一个约好的符号,它告知体系这个脚本需要什么解说器来履行,即运用哪一种 Shell。
echo 指令用于向窗口输出文本。
运转 Shell 脚本有两种方法:
1、作为可履行程序
将上面的代码保存为 test.sh,并 cd 到相应目录:
chmod +x ./test.sh #使脚本具有履行权限
./test.sh #履行脚本
注意,一定要写成 ./test.sh,而不是 test.sh,运转其它二进制的程序也一样,直接写 test.sh,linux 体系会去 PATH 里寻找有没有叫 test.sh 的,而只要 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当时目录一般不在 PATH 里,所以写成 test.sh 是会找不到指令的,要用 ./test.sh 告知体系说,就在当时目录找。
2、作为解说器参数
这种运转方法是,直接运转解说器,其参数便是 shell 脚本的文件名,如:
/bin/sh test.sh
/bin/php test.php
这种方法运转的脚本,不需要在榜首行指定解说器信息,写了也没用。
ubuntu(linux)下 source、sh、bash、./ 履行脚本的差异是什么?
1. source指令用法:
source FileName
作用:在当时 bash 环境下读取并履行 FileName 中的指令。该 filename 文件能够无 “履行权限”。
注:该指令一般用指令 . 来代替。
2. sh、bash的指令用法:
sh FileName
或
bash FileName
作用:打开一个子 shell 来读取并履行 FileName 中指令。该 filename 文件能够无 “履行权限”。
注:运转一个shell脚本时会启动另一个指令解说器。
3、./的指令用法:
./FileName
作用: 打开一个子 shell 来读取并履行 FileName 中指令,该 filename 文件需要 “履行权限”。
注:运转一个 shell 脚本时会启动另一个指令解说器。