Shell 是一种脚本语言,Shell 语言为解释型语言,需要解释器(解释程序)来翻译执行。
1. #! (shebang)
Shell 文件第一行中的 “#!” 后面写一个绝对路径,来指向执行当前脚本文件的解释器,操作系统的程序加载器会执行这个解释器,并将当前文件所在的路径作为参数,传递给解释器,去解释执行。写法如下所示:
使用 bash 解释器来解释执行当前的脚本文件#!/bin/bash
默认系统是不会自动去环境变量中找解释器的, 如果想去系统的环境变量中去查找,可以使用 env , 如下所示:
在环境变量中找pyhon。 如果环境变量里面设置了多个pyhon版本,下面的命令会使用找到的第一个pyhon版本#!/usr/bin/env pyhon也可以指定搜索目录。在/usr/local/bin、/usr/bin、${PATH}环境变量这三个目录中搜索python#!/usr/bin/env -S -P/usr/local/bin:/usr/bin:${PATH} python也可以这样来指定使用环境变量中哪个pyhon版本#!/usr/bin/env pythonX.x
注意点:
- 如果执行当前Shell 文件时显示指定了解释器,如
bash test.sh, 则会忽略当前 shebang 中指向的解释器 - 如果没有写 “#!” ,则会使用当前默认的解释器来执行。
echo ${SHELL}可以打印出当前使用的是哪个Shell - 如果指向的不是一个可执行程序,那么会忽略指定的解释器,而使用默认的解释器
- 如果指向的解释器没有可执行权限,则会报错“bad interpreter:Permission denied”
- 如果指向的解释器不存在,则会报错“bad interpret : No such file ordirectory”
2.注释
冒号(:) 作为内建命令:占位符、参数扩展和重定向
# echo "单行注释": << !多行注释方式一:echo "多行注释"!: << COMMENT多行注释方式二:echo "多行注释"COMMENT: '多行注释方式三:echo "多行注释"'if false; then多行注释方式四:echo "多行注释"fi((0)) && {多行注释方式五:echo "多行注释"}
3.内建常量
- HOME:代表用户主文件夹。
- SHELL:当前使用的是那个SHELL
- PATH:执行文件查找路径, ```bash echo ${HOME} echo ${SHELL} echo ${PATH}
```

