• 变量的定义

    • 变量名的命名规则
      • 字母、数字、下划线
      • 不以数字开头
  • 变量的赋值

    • 为变量赋值的过程,称为变量替换
      • 变量名=变量值
        • a=123
      • 使用let为变量赋值
        • let a=10+20
      • 将命令赋值给变量
        • l=ls
      • 将命令结果赋值给变量,是用$()或者````
        • let c=$(ls -l /etc)
      • 变量值有空格等特殊字符可以包含在” “ 或 ‘ ‘中
  • 变量的引用

    • ${变量名}称作对变量的引用
    • echo ${变量名} 查看变量的值
    • ${变量名} 在部分情况下可以省略为 $变量名
  • 变量的作用范围

    • 变量的默认作用范围: 只在当前环境下有效
      • 使用 source 因为是在当前进程中执行,所以被运行的脚本可以获取到当前环境下的变量。
    • 变量的导出: 子进程 获得 父进程变量
      • export
    • 变量的删除
      • unset
  • 系统环境变量: 每个Shell 打开都可以获得到的变量

    • set (预定义变量和位置变量,比如 $?)和 env (环境变量,比如: )命令

    • $? $$ $0

      • $? 上层命令返回结果是否成功(显示0, 非0 为不成功)
      • $$ 当前进程PID
      • $0 当前进程名称
      $0  shell的命令本身(包括完整路径)     ($0 是脚本本身的名字)
      $1到$9 数字表示shell 的第几个参数   
      $# 传递到脚本的参数个数  
      $* 以一个单字符串显示所有向脚本传递的参数  
      $$ 脚本运行的ID号  
      $! 后台运行的最后一个进程的ID号  
      $@ 与$*相同。  
      $- 显示shell使用的当前选项。  
      $? 显示最后命令的执行状况。0表示没有错误。 
      
    • $PATH 命令搜索路径,修改它能对子进程造成影响

    • $PS1 提示终端,可以自定义(比如增加时间、路径全显 )

      oot@ubuntu-s-2vcpu-4gb-sgp1-02:~# /bin/bash --rcfile <(echo "PS1=\\"container2> \\"")
      container1>
      
  • 位置变量

    • $1 $2 ... $n
      • 位置变量替换小技巧
      • ${2-_} 如果${2} 则 替换成_
  • 环境变量配置文件

    • /etc/profile (su - user,才会加载)
    • /etc/profile.d:不同shell类型执行不同的脚本, 兼容性
    • ~/.bash_profile (su - user,才会加载)
    • ~/.bashrc
    • /etc/bashrc

    使用 su - user 才会把配置文件加载齐全

    • etc 目录下 为通用配置