一、shell脚本编程
根据运行方式,编程语言的分类:
1. 编译运行:源代码—> 编译器(编译)—> 转换为二进制程序文件
2. 解释运行:源代码—> 运行时启动解释器,由解释器边解释边运行;
根据其编程过程中功能的实现是调用库还是调用外部的程序文件:
1. shell脚本编程:利用系统上的命令及编程组件进行编程;
2. 完整编程:利用库或编程组件进行编程;
编程模型:
1. 过程式编程语言:以指令为中心来组织代码,数据服务于代码;
>> 顺序执行
>> 选择执行
>> 循环执行
>>> 代表语言 : C , bash ;
2. 面向对象的编程语言:以数据为中心组织代码,围绕数据来组织指令;
>> 类(class) : 实例化成为对象,method ;
>> 代表语言 : Java , c++ , python ;
shell脚本编程:过程式编程,解释运行,依赖于外部程序文件运行;
shell脚本格式:
脚本文件的第一行顶格,给出shebang,解释器路径,用于指明解释执行当前脚本的解释器程序文件;
常见的解释器:
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
运行shell脚本:
1. 赋予脚本文件执行权限,并直接运行此程序文件;
chmod +x /PATH/TO/SCRIPT_FILE
/PATH/TO/SCRIPT_FILE
2. 直接运行解释器,将脚本以命令单数传递给解释器程序;
bash /PATH/TO/SCRIPT_FILE
3. 脚本中的空白行会被解释器忽略,如果要显示空白行,可以输入 echo ;
4. 脚本中除了shebang,余下的所有以 # 开头的行,都被视作注释行而被忽略;
5. shell脚本的运行是通过运行一个子shell进程实现的;
二、bash的配置文件
1. shell登录类型
交互式登录shell进程:
## 直接通过某终端输入账号密码后登录打开的shell进程;
## 使用 su 命令,su – USERNAME , 或者 su -l USERNAME 执行的登录切换;
非交互式登录shell进程:
## su USERNAME 执行的登录切换;
## 图形界面下打开的终端;
## 运行脚本时候,会打开字shell进程;
2. bash配置文件分类
profile 类 : 为交互式登录的shell进程提供配置;
bashrc 类 : 为非交互式登录的shell进程提供配置;
profile类:
> 全局:对所有用户都生效;
## /etc/profile
## /etc/profie.d/*.sh
> 用户个人:仅对当前用户有效;
## ~/.bash_profile
profile类的功用:
## 用于定义环境变量;
## 运行命令或脚本;
bashrc类:
> 全局:对所有用户都生效;
## /etc/bashrc
> 用户个人:仅对当前用户有效;
## ~/.bashrc
bashrc类的功用:
## 定义本地变量;
## 定义命令别名;
NOTICE:仅管理员可修改全局配置文件;
配置文件的读取顺序:
1. 交互式登录的shell进程:
/etc/profile —> /etc/profile.d/*.sh —> ~/.bash_profile —> ~/.bashrc —> /etc/bashrc
2. 非交互式登录的shell进程:
~/.bashrc —> /etc/bashrc —> /etc/profile.d/*.sh
命令行中定义的特性,例如变量和别名作用域为当前shell进程的生命周期;
配置文件定义的特性,只对随后新启动的shell进程有效;
让通过配置文件定义的特性立即生效:
## 通过命令行重复定义一次;
## 让shell进程重读配置文件:
### ~]# source /PATH/FROM/CONF_FILE
### ~]# . /PATH/FROM/CONF_FILE