`

`
/etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
bash和sh的关系↓
grep bash -rwxr-xr-x. 1 root root 941880 5月 11 2016 bash lrwxrwxrwx. 1 root root 4 5月 27 2017 sh -> bash
脚本以*#!/bin/bash*开头
是用来指定解析器的
需求:创建一个Shell 脚本,输出 helloworld
$ touch helloworld.sh
$ vim helloworld.sh
helloworld.sh中内容如下:
#!/bin/bash echo "helloworld"
$ sh ./helloworld.sh
sh+脚本的绝对路径
$ sh /home/atguigu/shells/helloworld.sh
bash+脚本的相对路径
$ bash ./helloworld.sh
bash+脚本的绝对路径
$ bash /home/atguigu/shells/helloworld.sh
$ chmod +x helloworld.sh
$ ./helloworld.sh
$ /home/atguigu/shells/helloworld.sh
注意:第一种执行方法,本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。
如下:
$HOME、$PWD、$SHELL、$USER 等
查看系统变量的值:
$ echo $HOME
显示当前Shell中所有变量:set
$ set
BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
(1) 定义变量:变量名=变量值,注意,=号前后不能有空格
(2) 撤销变量:unset 变量名
(3) 声明静态变量:readonly 变量,注意:不能 unset
(1) 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
(2) 等号两侧不能有空格
(3) 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4) 变量的值如果有空格,需要使用双引号或单引号括起来。
代码如下(示例):
#定义变量A
$ A=1024
#撤销变量A
$ unset A
#声明静态的变量 B=2,不能撤销
$ readonly B=2
#在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算
$ C=1+2
#变量的值如果有空格,需要使用双引号或单引号括起来
$ D="I love banzhang"