什么是shell、shell脚本?
-
Shell(Linux内核的“外壳”)
- 是运行在终端中的文本互动程序,是用户使用Linux的桥梁。
- shell程序有多种,如sh、bash、ksh、rsh、csh等。
- 其中最常用的shell是bash,bash也是大多数Linux发行版默认的shell程序
-
Shell脚本
- 交给shell来执行的脚本程序,进而调用Linux内核。
-
shell脚本的类型
- 不同的shell脚本本质上是解释器不同,最常用的是bash,更早之前是sh
- shell脚本文件中的第一行一般标明了脚本的解释器路径。如:
- #!/bin/bash
- #!/bin/sh
- #!/usr/bin/python
- #!/bin/awk -f
- #!是一个特殊的标记,用以说明该文件为可执行文件,在脚本文件中,除第一行之外,其他以 # 开头的均为注释
- 通过 cat/etc/shells 可以查看系统可使用的shell脚本类型
-
shell脚本的执行方式:
- bash或sh【脚本的相对或绝对路径】
- source【脚本的相对或绝对路径】,常用于更改/etc/profile中的环境变量后,运行该文件使其生效
- ./shell.sh(相对或绝对路径)该方法与 2 是一样的
- shell脚本在执行时,shell程序会寻找指定的解释器来执行,如果在执行时未指定解释器(如source、. 等),则会首先使用shell脚本第一行指定的解释器来执行。
什么是shell命令?
-
用来运行shell程序进而调用Linux内核的命令,分为内建命令与外部命令
-
内部命令:
- 内部命令指的是集成在shell程序里面的命令,一般都是轻量级的命令。只要shell程序被执行(大多数Linux发行版在登录时就会自动运行bash shell,此时内部命令即被加载到内存中),内部命令就自动载入内存,用户可以直接使用,比如cd命令等
-
外部命令:
- 外部命令是一个独立的外部可执行程序,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,通常保存在磁盘中,当需要时才将其加载到内存。通常外部命令的实体并不包含在Shell中,但是其命令执行过程是由Shell程序控制的。当外部命令被调用时,Shell 创建子进程来执行该命令。Shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等
-
可通过 type 区分内、外部命令
type echo # echo is a shell builtin type -a echo # 同时给出该命令的类型和存放路径 # echo is a shell builtin # echo is /bin/echo
【注意】内部命令由shell程序直接执行,外部命令和shell脚本均由shell程序的子进程执行。