zoukankan      html  css  js  c++  java
  • 使用Linux的环境变量

      许多程序和脚本都使用环境变量来获取系统信息,并存储临时数据和配置信息;

    1、什么是环境变量

      用来存储关于shell会话和工作环境的信息,就叫做环境变量;

      bash shell下两种类型:

        1、全局变量;

        2、局部变量;

      1.1、全局环境变量

        全局环境变量再shell会话,和在该shell中产生的子进程中都可见。

        Linux系统,默认情况下会支持一些全局环境变量,通过printenv来查看全局环境变量;

        使用echo命令来查看某个环境变量:

        例如:echo $HOME  #变量前面必须加上$符号;在子进程中,这个变量依然生效;

      1.2、局部环境变量

        本地环境变量,只在定义他们的本地进程中生效可见;没有命令可以只显示本地环境变量;

        set命令显示特定进程的所有环境变量集。set中看到的除了printenv中的变量外的所有变量,都是本地环境变量

    2、设置环境变量

      可以在bash shell中直接设置自己的环境变量。

      2.1、设置本地环境变量

        test=testing

        echo $test

        如果是字符串,就需要使用引号

        test='testing a long string'

        echo $test

        【注意:我们使用小写字母来定义本地环境变量】

        *环境变量名称、等号和值之间没有空格,这一点尤为重要*

        同时:如果在子进程中设置了本地环境变量,则一旦离开子进程,本地环境变量将不再可用;  

      2.2、设置全局变量

        我们需要创建一个本地环境变量,然后将其导出到全局环境中。这个过程通过export命令来完成;

        test='testing a long string'

        echo $test

        export test

        bash

        echo $test  #此时,test变量再子进程bash中也会生效了;

    3、移除环境变量

      unset可以为我们完成删除环境比那辆的操作;

      test=testing

      export test

      unset test

    4、默认的shell环境变量

      默认的Bourne的环境变量:

      1、CDPATH    cd命令的搜索路径

      2、HOME      当前用户的主目录

      3、IFS        用于分隔字段的字符列表,shell使用它们分隔本文字符串

      4、MAIL      当前用户邮箱文件名,对于新邮件,bash shell将检查该文件

      5、MAILPATH    当前用户邮箱的多个文件名,由冒号分隔。对于新邮件,bash shell将检查该列表中的各个文件

      6、OPTARG    getopts命令处理的最后一个选项参数的值

      7、OPTIND      getopts命令处理的最后一个选项参数的索引值

      8、PATH      冒号分隔的目录列表,shell将在这些目录中查找命令

       

      9、PS1      主shell命令行界面提示字符串

      10、PS2      次shell命令行界面提示字符串

      

      bash shell自己的环境变量:

    5、设置PATH环境变量

      echo $PATH

      PATH=$PATH:/home/rich/test

      程序员常用技巧

      PATH=$PATH:.  #后面直接加点(.),将当前目录添加到PATH中去;

    6、定位系统环境变量

      通过Linux启动bash shell的时候,系统会读取一些文件,这些文件被称为启动文件。文件里面包含了启动bash shell的一些方法,可以采用三种方式来启动bash shell:

      1、在登录时作为默认登录shell

      2、作为非登录shell的交互式shell

      3、作为非交互式shell运行脚本

      6.1、登录shell

        登录bash shell后,系统会查找四个常见文件:/etc/profile、$HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile;

        1、/etc/profile文件

        /etc/profile文件是bash shell在系统上的主默认启动文件。系统上的每一个用户在登录shell的时候都会执行这个启动文件。另外3个属于特定用户,可以根据用户需求来自己定义;

        我们可以在/etc/profile底部添加export行;

        例如:export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

        如果使用的比那辆比较大,或者是一个执行文件,可以使用/etc/profile.d目录;它是Linux系统提供了一个放置特定应用程序的启动文件的地方。

        2、$HOME启动文件

        另外的三个启动文件用于特定用户的环境变量,用户可以编辑这些文件来添加自己启动的bash shell会话都为活动状态的环境变量;

      6.2、交互式shell

        bash 回车,这样的话启动了一个bash shell而没有登录系统,就是交互式的shell。交互式的shell与登录shell的行为不同,但它仍然提供了CLI的提示符界面;

        交互式的shell不会处理/etc/profile文件,相反他会检查$HOME/。bashrc文件;

        .bashrc文件执行两个任务:1、检查/etc目录中的公共bashrc;2、方便用户输入个人别名;  

      6.3、非交互式shell

        这是系统开始执行shell脚本的shell,它不用担心CLI提示符。但是,您仍然希望在每次启动系统中的脚本时运行特定的脚本启动命令。

        为了适应这种情况,bash shell提供连带BASH_ENV环境变量。当shell开始一个非交互是shell程序时,它将检查该环境变量表示的待执行启动文件的名称。如果该变量有值,则shell将执行该文件中的命令。在我们的Linux发型版本中,此环境变量并非默认设置;

    7、变量数组

      环境变量可以作为数组使用;数组可以保存多个值,这些值可以一起引用,也可以单独引用;

      mytest=(one two three four five)

      echo $mytest

      echo ${mytest[2]}

      echo ${mytest[*]}

      mytest[2]=seven  #给数组汇总的某个值赋值

      unset mytest  #移除整个数组变量

    8、使用别名

      alias -p  #查看当前支持的别名

      alias li='ls -il'  #这样就可以自己定义命令的显示格式;

      除了直接使用alias命令意外,还可以随时在shell中使用它。

      命令别名与本地环境变量的行为相似。它们只对与定义范围内的shell进程生效;

      bash

      li  #这样的话,新定义的alias li就无效了;

      当然,您也可以在$HOME/.bashrc启动文件中去定义,这样的话,新的交换式的shell界面就会读取这个alias的配置;

  • 相关阅读:
    go基础_定时器
    作业3:写一个测试程序,消耗固定内存
    Hdu3397Sequence operation线段树
    Hdu3308LCIS线段树
    Poj3667Hotel线段树
    Poj1436Horizontally Visible Segments线段树
    Poj3225Help with Intervals区间线段树
    Poj2528Mayor's posters线段树
    poj3468A Simple Problem with Integers区间和线段树
    Hdu1698Just a Hook线段树区间更新
  • 原文地址:https://www.cnblogs.com/BurnovBlog/p/10777898.html
Copyright © 2011-2022 走看看