zoukankan      html  css  js  c++  java
  • 环境变量

    环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量。

    用户自定义变量只在当前shell中生效,而环境变量会在当前shell中生效还会在当前shell的所有子shell中生效

    如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效。(如果不写入配置文件,那么当前shell

    一旦终止,那么这个环境变量就会消失,而只有写入配置文件才会永久的,在所有shell中生效)

    在Linux操作系统中一般通过环境变量配置操作系统的环境,如提示符,查找命令的路径,用户家目录等,这些系统默认的环境变量的变量名是固定的

    我们只能修改变量的值,当然,我们也可以手工定义环境变量,不过这些变量就不能修改操作系统环境,而只是一个全局变量。

    1.环境变量的设置

    环境变量和用户自定义变量相比,只需要通过export命令将变量声明为环境变量就可以了

    [root@andy ~]# export age=18
    + export age=18
    + age=18
    [root@andy ~]# echo $age
    + echo 18
    18
    [root@andy ~]#

    也可以把变量声明为本地变量,再用export声明为环境变量,命令如下

    [root@andy ~]# gender=male
    [root@andy ~]# export gender
    [root@andy ~]#

    这样性别也被声明为环境变量了,用户自定义变量和环境变量的区别就是用户自定义变量只能在当前shell中有效,

    而环境变量在当前shell和所有子shell中有效。

    在现有shell中查询

    [root@andy ~]# gender=male
    [root@andy ~]# export gender
    [root@andy ~]# name=Andy
    [root@andy ~]# set

    gender=male
    name=Andy

    进入子shell中查询

    [root@andy ~]# bash
    [root@andy ~]# set

    gender=male

    在子shell中只能看到环境变量,gender,而看不到name,这就是环境变量和用户自定义变量的区别。

    2.环境变量查询和删除

    set既然可以查询所有的变量,当然也可以查询环境变量,还可以使用env命令进行环境变量的查询

    [root@andy ~]# env
    XDG_SESSION_ID=8
    HOSTNAME=andy
    SHELL=/bin/bash
    TERM=vt100
    HISTSIZE=1000
    SSH_CLIENT=192.168.160.1 14161 22
    SSH_TTY=/dev/pts/2
    gender=male
    USER=root
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    MAIL=/var/spool/mail/root
    PWD=/root
    LANG=zh_CN.UTF-8
    HISTCONTROL=ignoredups
    HOME=/root
    SHLVL=2
    LOGNAME=root
    SSH_CONNECTION=192.168.160.1 14161 192.168.160.144 22
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    XDG_RUNTIME_DIR=/run/user/0
    _=/usr/bin/env
    [root@andy ~]#

    env和set的区别是,set命令可以查看所有变量,而env命令只能查看环境变量,我们可以发现系统默认有很多

    的环境变量。

    环境变量的删除

    环境变量的删除和用户自定义的删除方法是一样的。都使用unset命令

    [root@andy ~]# unset gender
    [root@andy ~]# env | grep gender
    [root@andy ~]#

    3.系统默认环境变量

    [root@andy ~]# env
    XDG_SESSION_ID=8
    HOSTNAME=andy    主机名
    TERM=vt100    终端环境
    SHELL=/bin/bash    shell类型
    HISTSIZE=1000    历史命令条数
    SSH_CLIENT=192.168.160.1 14161 22    当前操作环境是用ssh连接的,这里记录客户端IP
    SSH_TTY=/dev/pts/2  ssh连接的终端是pts/1
    USER=root    当前登陆的用户
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:    定义颜色显示
    MAIL=/var/spool/mail/root    用户邮箱
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin  系统查找命令的路径
    PWD=/root    当前所在的目录
    LANG=zh_CN.UTF-8  语系
    HISTCONTROL=ignoredups    
    SHLVL=1  当前在第一层shell中
    HOME=/root    当前登陆用户的家目录
    LOGNAME=root    登陆用户
    SSH_CONNECTION=192.168.160.1 14161 192.168.160.144 22  当前连接的客户端是192.168.160.1  当前连接server端的IP是192.168.160.144  端口是22
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    XDG_RUNTIME_DIR=/run/user/0
    _=/usr/bin/env
    [root@andy ~]#

    env命令可以查询到所有的环境变量,还有一些变量虽然不是环境变量,但是是和Bash操作接口相关的变量,这些变量也对我们的Bash操作终端起到了重要作用

    这些命令就只能用set命令来查看,这里只列出重要的内容[root@andy ~]# setBASH=/bin/bash  bash的位置

    BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")  bash的信息
    BASH_VERSION='4.2.46(1)-release'  bash的版本
    HISTFILE=/root/.bash_history  历史命令保存文件
    HISTFILESIZE=1000  在文件中记录的历史命令最大条数
    HISTSIZE=1000  在缓存中记录的历史命令最大条数
    LANG=zh_CN.UTF-8  语系
    MAILCHECK=60  每隔60s去扫描新邮件
    PIPESTATUS=([0]="0")
    PPID=3168  父shell的PID
    PS1='[u@h W]$ '  命令提示符
    PS2='> '  如果命令在一行中没有完成,第二行的命令提示符
    UID=0  当前用户的UID
    [root@andy ~]#

     重要的环境变量

    PATH变量  系统查找命令的路径

    程序脚本要想在linux系统中运行,需要使用绝对路径,或相对路径指定这个脚本所在的位置。

    PATH变量值的作用就是系统查找命令的路径。

    [root@andy ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@andy ~]#

     PATH变量的值是用":"分隔的路径

    也就是说,我们输入一条命令,如果没有写入路径,系统就会到PATH变量定义的的路径中查找,

    如果找到则执行,如果没有找到则报错。

    如果把自己写的脚本复制到PATH变量定义的路径中便可以不输入路径而直接执行,也可以修改PATH变量,在PATH中加入脚本所在的目录,也可以直接执行(一般采用这种)。

    PS1变量  命令提示符变量

    d:显示日期,格式为星期  月  日

    H:显示完整的主机名

    h:显示简写的主机名

    :显示24小时制时间,格式为  HH:MM:SS

    T:显示12小时制的时间格式为  HH:MM:SS

     A:显示24小时制时间,格式为  HH:MM

    @:显示12小时制的时间格式为  HH:MM:am/pm

    u:显示当前用户名

    v:显示Bash的版本信息

    w:显示当前所在目录的完整名称

    W:显示当前所在目录的最后一个目录

    #:执行的第几条命令

    $:提示符。如果是root用户,则会显示提示符为#如果是普通用户则会显示提示符为$

    PS1的默认值为

    [root@andy ~]# echo $PS1
    [u@h W]$
    [root@andy ~]#

    在PS1变量中如果是可以解释的变量,则显示这个符号的作用。如果不能解释的符号,

    则原符号输出。修改PS1变量。


    HISTSIZE=1000
    SSH_CLIENT=192.168.160.1 14161 22
    SSH_TTY=/dev/pts/2
    USER=root
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
    MAIL=/var/spool/mail/root
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    PWD=/root
    LANG=zh_CN.UTF-8
    HISTCONTROL=ignoredups
    SHLVL=1
    HOME=/root
    LOGNAME=root
    SSH_CONNECTION=192.168.160.1 14161 192.168.160.144 22
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    XDG_RUNTIME_DIR=/run/user/0
    _=/usr/bin/env
    [root@andy ~]#

  • 相关阅读:
    如何:为 Silverlight 客户端生成双工服务
    Microsoft Sync Framework 2.1 软件开发包 (SDK)
    Windows 下的安装phpMoAdmin
    asp.net安全检测工具 Padding Oracle 检测
    HTTP Basic Authentication for RESTFul Service
    Windows系统性能分析
    Windows Server AppFabric Management Pack for Operations Manager 2007
    Mongo Database 性能优化
    服务器未能识别 HTTP 标头 SOAPAction 的值
    TCP WAIT状态及其对繁忙的服务器的影响
  • 原文地址:https://www.cnblogs.com/yzandy/p/12206471.html
Copyright © 2011-2022 走看看