参考课程-蓝桥云课

环境变量

  1. 相关命令
    命 令 说 明
    set 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
    env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
    export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。
    • 示例
      shiyanlou:Desktop/ $ declare tmp
      shiyanlou:Desktop/ $ tmp=shiyanlou
      shiyanlou:Desktop/ $ echo $tmp
      shiyanlou
      shiyanlou:Desktop/ $ zsh               #创建子shell,从默认的bash切换到zsh
      shiyanlou:Desktop/ $ echo $tmp   #值为空,表示该变量无效
      
      shiyanlou:Desktop/ $ exit               #退出
      shiyanlou:Desktop/ $ export tmp   #导出tmp为环境变量
      shiyanlou:Desktop/ $ zsh
      shiyanlou:Desktop/ $ echo $tmp    #变量有效
      shiyanlou
      
    • 按变量的生存周期划分,Linux变量可分为两类:
      • 永久的:需要修改配置文件,变量永久生效
      • 临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效
    • 两个重要文件
      • /etc/bashrc(有的Linux没有这个文件):存放shell变量
      • /etc/profile:存放shell变量和环境变量,对所有用户永久生效
        注意:没有用户目录下的隐藏文件.profile只对当前用户永久生效
  2. 添加自定义路径到“PATH”环境变量
    • 添加自定义路径:
    PATH=$PATH:/home/shiyanlou/mybin
    
  • 每次启动Shell时自动添加自定义路径到PATH

    在每个用户的 home 目录中有一个 Shell 每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。实验楼的环境使用的 Shell 是 zsh,它的配置文件是 .zshrc,相应的如果使用的 Shell 是 Bash,则配置文件为 .bashrc。

    echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
    
  1. 修改和删除已有变量
    • 变量修改
      变量设置方式 说明
      ${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据
      ${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据
      ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
      ${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据
      ${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串
      ${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串
    • 变量删除
      使用unset命令删除一个环境变量
      unset mypath
      
  2. 让环境变量立即生效
    • 在Shell中修改了一个配置脚本文件之后,每次都要退出终端重新打开甚至重启主机之后其才能生效。可以使用source命令来让其立即生效:
      cd /home/shiyanlou
      source .zshrc
      
    • source命令别名.,所以上条命令可替换成:
      . ./.zshrc     #后面的文件必须指定完整的绝对或相对路径名,source则不需要
      
  3. 搜索文件
    • whereis简单快速
      shiyanlou:Desktop/ $ whereis who
      who: /usr/bin/who /usr/share/man/man1/who.1.gz
      
    whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)
    • locate快而全
      这个命令不是内置命令,在部分环境中需要手动安装,然后执行更新
      sudo apt-get update
      sudo apt-get install locate
      sudo updatedb
      
      • 查找usr/share/下所有jpg文件:
        locate /usr/share/*.jpg
        
      • 若想只统计数目可以加上-c参数,-i参数可以忽略大小写进行查找,whereis-b-m-s同样可以用
    • which小而精

      which 本身是 Shell 内建的一个命令,我们通常使用which来确定是否安装了某个指定的程序,因为它只从PATH环境变量指定的路径中去搜索命令并且返回第一个搜索到的结果

      shiyanlou:Desktop/ $ which man 
      /usr/bin/man
      shiyanlou:Desktop/ $ which nginx 
      /usr/sbin/nginx
      shiyanlou:Desktop/ $ which ping 
      /bin/ping
      
    • find精而细

      find应该是这几个命令中最强大的了,它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索

      • 基本命令格式
        find [path][option] [action]