bash环境:
shell:外壳 做为操做系统自己的shell,是用户跟机器交互的接口,把用户指望执行的命令提交给内核,让内核把
它启动起来,并做为一个进程进行调度
bash是一个解释器shell
编译器:
解释器:在命令行输入一条命令后,解释器要对此命令或语句作出解释
解释:可以理解用户输入指令的意义
词法分析:按照空格做为分隔符,切割成n个片断以后,做为命令解释器它必须得知道哪一个是命令,哪一个是选项、哪一个是参数。。。?
语法分析
语义分析编程
条件判断:选择分支
循环bash
过程式编程语言:执行方式通常为
顺序执行
选择执行
循环执行编程语言
解释器:提供了编程环境函数
脚本:使用bash提供控制机制,将指望执行的命令罗列于文本文件中;
bash没有库,整个程序几乎都要依赖于系统命令来完成;操作系统
编译型:
源程序(文本文件)--> 预处理 --> 编译 --> 汇编 --> 连接 命令行
静态语言接口
解释型:
源程序(文本文件)--> 解析器去读取并执行进程
动态语言内存
bash的重要特性:变量(内存空间)
bash变量类别:
本地变量:只对当前shell进程有效的变量;对其它shell进程无效,包括当前shell进程的子进程;
init进程:初始化系统进程,全部的进程都是其fork而来
VAR_NAME=VALUE
变量赋值:向变量的存储空间保存数据
变量引用:${VAR_NAME}
"":弱引用,里面的变量会被替换;
'':强引用,里面的全部字符都是字面量,直接输出,不会作任何替换的;
环境变量:对当前shell进程及其子shell有效,对其它的shell进程无效;
定义:export VAR_NAME=VALUE
导出变量:export VAR_NAME
用户可自义环境变量
bash有许多内置的环境变量
撤消变量:unset VAR_NAME
NAME
unset - unset values and attributes of variables and functions
SYNOPSIS
unset [-fv] name ...
DESCRIPTION
Each variable or function specified by name shall be unset.
只读变量:readonly VAR_NAME
NAME
readonly - set the readonly attribute for variables
SYNOPSIS
readonly name[=word]...
readonly -p
DESCRIPTION
The variables whose names are specified shall be given the readonly attribute. The values of variables with the readonly
attribute cannot be changed by subsequent assignment, nor can those variables be unset by the unset utility. If the name of a
variable is followed by = word, then the value of that variable shall be set to word.
局部变量:
对shell脚本中某代码片段有效;一般用于函数本地;函数调用结束,值消失
local VAR_NAME=VALUE
位置变量:
$1, $2, ..., ${10}
特殊变量:
$?
查看当前shell进程中的全部变量:set
查看当前shell进程中的全部环境变量: printenv, env export
变量命名:
一、不能使用程序中的关键字(保留字);
if, case, for
二、只能使用数字、字母和下划线,且不能以数字开头;
三、要见名知义
userName
变量类型:
name=Jerry
一、存储机制 文本和二进制格式
二、存储空间
三、参与的运算方式
变量类型:
数值型:
精确数值:整数
近似数值:浮点型
单精度浮点
双精度浮点
字符型:
char
string
布尔型:
true, false
类型转换:
显式转换
隐式转换
bash是弱类型的语言:一切皆字符
18:0001 0010 二进制数
18: 1, 8
ASCII: 128经常使用字符
000 0001 a
000 0010 a
bash的配置文件:
profile类:为交互式登陆的用户提供配置
全局:
/etc/profile
/etc/profile.d/*.sh
用户:
~/.bash_profile
功用:
一、设定环境变量
二、运行命令或脚本
bashrc类:为非交互式的用户提供配置
全局:
/etc/bashrc
用户:
~/.bashrc
功用:
一、设定本地变量
二、定义命令别名
登陆类型:
交互式:
直接经过终端输入帐号和密码登陆;
使用su -l USERNAME 或 su - USERNAME;
非交互式:
su USERNAME
图形界面下打开的终端
执行脚本
经过编辑配置文件修改的配置生效?
一、退出并从新登陆;
二、让bash重读此配置文件;
. FILE
source FILE
交互登陆的用户:
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互登陆的用户: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh