使用Linux的环境变量

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

一、什么是环境变量

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

  bash shell下两种类型:数组

    一、全局变量;bash

    二、局部变量;命令行

  1.一、全局环境变量

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

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

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

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

  1.二、局部环境变量

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

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

二、设置环境变量

  能够在bash shell中直接设置本身的环境变量。

  2.一、设置本地环境变量

    test=testing

    echo $test

    若是是字符串,就须要使用引号

    test='testing a long string'

    echo $test

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

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

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

  2.二、设置全局变量

    咱们须要建立一个本地环境变量,而后将其导出到全局环境中。这个过程经过export命令来完成;

    test='testing a long string'

    echo $test

    export test

    bash

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

三、移除环境变量

  unset能够为咱们完成删除环境比那辆的操做;

  test=testing

  export test

  unset test

四、默认的shell环境变量

  默认的Bourne的环境变量:

  一、CDPATH    cd命令的搜索路径

  二、HOME      当前用户的主目录

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

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

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

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

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

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

   

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

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

  

  bash shell本身的环境变量:

五、设置PATH环境变量

  echo $PATH

  PATH=$PATH:/home/rich/test

  程序员经常使用技巧

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

六、定位系统环境变量

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

  一、在登陆时做为默认登陆shell

  二、做为非登陆shell的交互式shell

  三、做为非交互式shell运行脚本

  6.一、登陆shell

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

    一、/etc/profile文件

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

    咱们能够在/etc/profile底部添加export行;

    例如:export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

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

    二、$HOME启动文件

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

  6.二、交互式shell

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

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

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

  6.三、非交互式shell

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

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

七、变量数组

  环境变量能够做为数组使用;数组能够保存多个值,这些值能够一块儿引用,也能够单独引用;

  mytest=(one two three four five)

  echo $mytest

  echo ${mytest[2]}

  echo ${mytest[*]}

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

  unset mytest  #移除整个数组变量

八、使用别名

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

  alias li='ls -il'  #这样就能够本身定义命令的显示格式;

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

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

  bash

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

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

相关文章
相关标签/搜索