Shell é um programa escrito em linguagem C, que é uma ponte para os usuários usarem o Linux. Shell é uma linguagem de comando e uma linguagem de programação.
Shell refere-se a um programa aplicativo que fornece uma interface por meio da qual os usuários acessam os serviços do kernel do sistema operacional.
O sh de Ken Thompson é o primeiro shell Unix, e o Windows Explorer é um shell típico de interface gráfica.
1. Script de shell
Shell script (shell script) é um programa de script escrito para o shell.
O shell mencionado na indústria geralmente se refere a scripts de shell, mas os leitores devem saber que shell e script de shell são dois conceitos diferentes.
Devido a razões habituais, por uma questão de brevidade, "programação de shell" neste artigo refere-se à programação de scripts de shell, não ao próprio shell de desenvolvimento.
2. Ambiente shell
A programação Shell é a mesma que a programação JavaScript e PHP, desde que haja um editor de texto que possa escrever código e um interpretador de script que possa interpretar e executar.
Existem muitos tipos de Linux Shells, os mais comuns são:
- Bourne Shell (/usr/bin/sh ou /bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell para Root(/sbin/sh)
3. O primeiro script de shell
Abra um editor de texto (você pode usar o comando vi/vim para criar um arquivo), crie um novo arquivo test.sh, a extensão é sh (sh significa shell), a extensão não afeta a execução do script, apenas conheça o nome, se você usar php para escrever scripts de shell, use apenas php como extensão.
Digite algum código, a primeira linha geralmente é assim:
#!/bin/bash
echo "Hello World !"
复制代码
#!É uma marca convencional, que informa ao sistema qual interpretador esse script precisa executar, ou seja, qual shell usar.
O comando echo é usado para enviar texto para a janela.
运行 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 脚本时会启动另一个命令解释器。