预定义变量

  • $? -> 指上一次命令是否正确执行,是否产生错误
    • $?的值为0,表示上一次命令正确执行,非0,表示执行错误
  • $_ -> 上一条命令的最后一个参数
    • mkdir somedir && cd $
  • $$ -> 当前进程的pid
    • echo $$ -> 显示当前进程的pid
  • $0 -> 当前进程的名称

    位置变量

  • $1 $2 … $9 ${10}…

  • ${1-} -> 处理空值,如果$1没有值,则值为下划线

    环境变量

    定义

  • 环境变量:每个shell终端打开都可以访问到的变量

  • env -> 查看所有的环境变量
  • echo $环境变量名 -> 查看某个单独的环境变量
    • echo $USER -> 查看当前的用户
    • echo $SHELL -> 查看系统默认的shell
    • echo $PATH -> 查看命令的搜索路径

      配置文件

      相关文件
  1. /etc/profile
  2. /etc/bashrc
  3. ~/.bash_profile
  4. ~/.bashrc

注:etc下的文件是给所有用户通用的,家目录下的文件只对当前用户生效
执行顺序
如果这些文件里变量名有重复,后加载的会覆盖先加载的

  • login-shell
    • 四个配置文件都会加载:/etc/profile -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc
  • nologin-shell
    • 配置文件加载不全: ~/.bashrc -> /etc/bashrc