使用Linux环境变量–笔记



什么是环境变量
设置环境变量删除环境变量
默认shell环境变量
设置PATH环境变量
定位系统环境变量
可变数组
使用命令别名


主要学习linux环境变量:他们存储在哪里,怎样使用,以及怎样创建自己的环境变量。使用别名alias等。

什么是环境变量

  • bash shell用作一个称做环境变量的特性来存储有关shell会话和工作环境的信息。它允许在内存中存储数据,以便运行在shell 上的程序和脚本访问。这也是存储永久数据的一种简便方法,这些数据可以是用来识别用户账户、系统、shell的特性以及任何其他需要存储的数据。

  • bash shell 中,环境变量分为两类
    全局变量和局部变量
    全局环境变量不仅对shell会话可见,对所有shell创建的子进程也可见。局部变量则只对创建他们的shell可见。折让全局环境变量对那些子进程中需要获得父进程信息的程序来说非常有用。

  • 查看全局变量

  • [root@richy ~]# printenv
    HOSTNAME=richy
    TERM=xterm
    SHELL=/bin/bash
    HISTSIZE=1000
    SSH_CLIENT=192.168.0.25 52567 22
    SSH_TTY=/dev/pts/0
    USER=root
    MAIL=/var/spool/mail/root
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    PWD=/root
    LANG=en_US.UTF-8
    MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles
    LOADEDMODULES=
    HISTCONTROL=ignoredups
    SHLVL=1
    HOME=/root
    LOGNAME=root
    CVS_RSH=ssh
    SSH_CONNECTION=192.168.0.25 52567 192.168.0.66 22
    MODULESHOME=/usr/share/Modules
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    G_BROKEN_FILENAMES=1
    BASH_FUNC_module()=() {  eval `/usr/bin/modulecmd bash $*`
    }
    _=/usr/bin/printenv

  • 要显示单个环境变量可以使用  echo $HOME

  • [root@richy ~]# echo $HOME
    /root

  • 局部环境变量可以用set查看,set包含了全局变量里面的内容,但也增加了除了全局变量以外的其他内容。可见全局变量的继承性质。

设置环境变量

  • 设置自己的环境变量,通过交互式shell 或者shell脚本创建自己的环境变量并引用他们。

  • 设置局部环境变量
    test=testing
    如果需要给变量赋值带有空格字符的值,则需要用单引号来界定字符串的开始和结尾如
    test='testing a long string'
    echo $test
    testing a long string
    创建新的环境变量时,最好使用小写字母,这样方便以后区别用户个人环境变量和系统环境变量。
    局部变量只在当前的shell下可用。

  • 设置全局环境变量
    全局环境变量在设定该全局环境变量的进程创建的所有子进程中都是可见的。创建全局环境变量的方法是先创建一个局部环境变量,然后再把他导出到全局环境变量中。
    [root@richy ~]# echo $test
    testing a long string
    [root@richy ~]# export test

删除环境变量

  • 删除环境变量可以使用unset命令来删除。
    [root@richy ~]# echo $test
    testing a long string
    [root@richy ~]# unset test
    [root@richy ~]# echo $test
    [root@oldboy ~]#

  • 注意在unset后面不需要接$ 这个符号

  • 在处理全局环境变量时,事情就有点复杂了,如果实在子进程中删除了一个全局环境变量,它只对子进程有效。该全局环境全局变量在父进程中依然有效。

默认shell环境变量

  • bash shell 支持的Bounme环境变量有
    CDPATH----冒号分隔的目录列表,作为cd命令的搜索路径
    HOME-------当前用户的主目录
    IFS-----------shell用来分隔文本字符串的一列字符
    MAIL--------当前用户收件箱的文件名;bash shell 会检查这个文件来看有没有新邮件
    MAILPATH-冒号分隔的当前用户收件箱的文件名列表;bash shell 会检查列表中的每个文件来看有没有新的邮件
    OPTARG----getopts 命令处理的最后一个选项参数值
    OPTIND----getopts 命令处理的最后一个选项参数的索引号
    PATH-------冒号分隔的shell 查找命令的目录列表
    PS1----------shell 命令行界面的主提示符
    PS2----------shell 命令行界面的次提示符

  • 以上列表中最常用的有PATH  PS1  HOME ,其中最重要的是PATH

  • 除了默认的Bourne的环境变量,bash shell 还提供一些自有的变量。

设置PATH环境变量

  • PATH环境变量是Linux 系统上造成最多问题的变量。他灵异了命令行输入命令的搜索路径。如果找不到命令他会产生一个错误:
    [root@richy ~]# luruiqi
    -bash: hkdsf: command not found
    [root@richy ~]#

  • 添加新的变量到PATH环境变量中,引用原来的PATH值,然后再给字符串添加新的目录就行了,列如:
    [root@richy ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    [root@richy ~]# PATH=$PATH:/home/user/test
    [root@richy ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/user/test

定位系统环境变量