一:名词理解

编译型:源程序(文本文件)  预处理  编译  汇编  链接

    静态语言

解释型:源程序(文本文件)  解析器读取并执行

    动态语言

编译器:

解释器:

       解释:

            词法分析

            语法分析

            语义分析


条件判断:选择分支

循环:


对象式编程:

过程式编程:

         顺序执行

         选择执行

         循环执行


解释器:提供了编程环境

脚本:使用bash提供控制机智,将期望执行的命令罗列于文本文件中

      bash没有库,整个程序几乎都要依赖于命令


二、变量

1、bash变量类别

本地变量:只对当前shell进程有效,对其它shell进程无效,包括当前shell的子进程

     变量赋值:向变量的存储空间保存数据   VAR_NAME=VALUE

     变量引用:${VAR_NAME} 

           “”:弱引用,里面的变量会被替换

            '':强引用,里面的所有字符都是字面量,直接输出

环境变量:对当前shell进程有效及其子shell有效,对其他shell无效

    定义:export VAR_NAME=VALUE

    导出:export VAR_NAME 

    撤销变量: unset VAR_NAME 

    只读变量: readonly VAR_NAME  

          用户可自定义,bash有许多内置的环境变量

局部变量:对shell脚本中某代码片段有效,通常用于函数本地:

    定义: local VAR_NAME=VALUE

位置参数变量:$1,$2,$3、、、${10}

特殊变量:$?,


查看当前shell进程中的所有变量:set

查看当前shell进程中的所有环境变量:export,printenv,env


变量命令:

    1、不能使用程序中的关键字(保留字)如,if,case,for

    2、只能使用数字,字母和下划线,且不能以数字开头

    3、要见名知义


2、变量类型

        a.存储机制

        b.存储空间

        c.参与的运算方式

            (二进制)数字的存储,                18:00010010

            文本的存储,  ASCII:128常用字符       18:1,8

         1:8bits   8:8bits   18:16bits

   变量类型:

        数值型:

            精确数值:整数

            近似数值:浮点型

                          单精度浮点

                          双精度浮点

         字符型:

             char

             string

         布尔型:true,false

bash是弱字符型语言,一切皆字符

类型转换:显示转换,隐式转换    


三、bash的配置文件   

profile类:为交互式登录的用户提供配置

      全局:   

           /etc/profile

          /etc/profile.d/*.sh

      用户:~/.bash_profile

用途:

     1、设定环境变量

     2、运行命令或脚本

bashrc类:为非交互式用户提供配置

     全局:/etc/bashrc

     用户:~/.bashrc

用途:

     1、设定本地变量

     2、定义命令别名


登录类型

    交互式:直接通过终端输入帐号和密码登录,使用su - USERNAME

    非交互式:su USERNAME

             图形界面下打开的终端

             执行脚本


如何使通过编辑配置文件修改的配置生效?

1、退出并重新登录

2、让bash重读此配置文件

    . FILENAME       注意,多次重读配置文件可能会产生重复赋值    

    source FILENAME


系统开机读取bash配置文件顺序

交互登录的用户:

          /etc/profile  /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc

非交互式登录的用户:

          ~/.bashrc /etc/bashrc  /etc/proile.d/*.sh