bash的配置文件
bash shell的配置文件很多,可以分为以下类别
1.1 按生效范围划分为两类
1.1.1 全局配置:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
1.1.2 个人配置:
~/.bash_profile
~/.bashrc
1.2 shell登录的两种方式分类
1.2.1 交互式登录
-
直接通过终端输入账户密码
-
使用
su - username
切换用户
配置文件执行顺序:
5.2 shell登录的两种方式分类
5.2.1 交互式登录
- 直接通过终端输入账户密码
- 使用su - username 切换用户
配置文件执行顺序:
1.2.2 非交互式登录
-
su username
-
图形界面下打开的终端
-
执行脚本
-
任何其他的bash实例
配置文件执行顺序:
/etc/profile.d/*.sh --> /etc/bashrc --> ~/.bashrc
1.3 按功能划分分类
1.3.1 Profile类
profile类为交互式登录的shell提供配置
-
全局:
/etc/profile, /etc/profile.d/*.sh
source 配置文件
11111111
-
个人:
~/.bash_profile
-
功能:
-
用于定义环境变量
-
运行命令或脚本
1.3.2 Bashrc类
bashrc类:为非交互式和交互式登录的shell提供配置
-
全局:
/etc/bashrc
-
个人:
~/.bashrc
-
定义命令别名和函数
-
定义本地变量
1.4 编辑配置文件生效
功能:
source 配置文件
二、流程控制
2.1 条件选择
2.1.1 选择执行if语句
if结构:
[root@ansible-salve1 shell]# help if
if: if 条件; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi
根据条件执行命令。
`if COMMANDS'列表被执行。如果退出状态为零,则执行`then COMMANDS'
列表。否则按顺序执行每个 `elif COMMANDS'列表,并且如果它的退出状态为
零,则执行对应的 `then COMMANDS' 列表并且 if 命令终止。否则如果存在的
情况下,执行 `else COMMANDS'列表。整个结构的退出状态是最后一个执行
的命令的状态,或者如果没有条件测试为真的话,为零。
退出状态:
返回最后一个执行的命令的状态。
[root@ansible-salve1 shell]#
2.1.1.1 单分支
if [ 条件判断式 ];then
命令
fi
或者
if [ 条件判断式 ]
then
命令
fi
2.1.1.2 双分支
if [ 条件判断式 ]
then
命令
else
命令
fi
2.1.1.3 多分支
if [ 条件判断式1 ]
then
命令
elif [ 条件判断式2 ]
then
命令
...
...
else
命令
fi
示例:依据BMI参数写出判断语句
[root@ansible-salve1 shell]# vim info5.sh
#!/bin/bash
read -p "请输入身高(m为单位):" HIGH
if [[ ! "$HIGH" =~ ^[0-2].?[0-9]{,2}$ ]]
then
echo "请不要输入错误的身高";
exit 1;
fi
read -p "请输入体重(Kg为单位):" WEIGHT
if [[ ! "$WEIGHT" =~ ^[0-9]{1,3}$ ]]
then
echo "请不要输入错误的体重";
exit 1;
fi
BMI=`echo $WEIGHT/$HIGH^2|bc`
if [ $BMI -le 18 ] ;then
echo "你太瘦了,请注意身体建康"
elif [ $BMI -lt 24 ] ;then
echo "身材很棒!"
else
echo "你太胖了,注意节食,加强运动"
fi
[root@ansible-salve1 shell]# chmod +x info5.sh
[root@ansible-salve1 shell]# ./info5.sh
说明:
-
多个if条件时,逐个条件进行判断,第一次遇见为“真”条件时,执行其分支,而后结束整个if语句
-
if语句可嵌套