Linux命令之env:顯示目前使用者的環境變數

來源:互聯網
上載者:User

Linux系統裡的env命令可以顯示目前使用者的環境變數,還可以用來在指定環境變數下執行其他命令。下面來比較一下set,env和export命令的異同:set命令顯示當前shell的變數,包括目前使用者的變數;env命令顯示目前使用者的變數;export命令顯示當前置出成使用者變數的shell變數。每個shell有自己特有的變數set)顯示的變數,這個和使用者變數是不同的,目前使用者變數和你用什麼shell無關,不管你用什麼shell都在,比如HOME,SHELL等這些變數,但shell自己的變數不同shell是不同的,比如BASH_ARGC,BASH等,這些變數只有set才會顯示,是bash特有的,export不加參數的時候,顯示哪些變數被匯出成了使用者變數,因為一個shell自己的變數可以通過export “匯出”變成一個使用者變數。

常用方式

格式:env

列印目前使用者的環境變數。

格式:env -i NAME1=VALUE1 NAME2=VALUE2 <command-line>

使用指定的環境變數執行命令列<command-line>。

使用樣本

樣本一:比較env,set和export

set命令列印的資訊最多,包括自訂函數等,以至於要使用more才能看得清。

[root@www.linuxidc.com ~]# envHOSTNAME=webTERM=linuxSHELL=/bin/bashHISTSIZE=1000SSH_CLIENT=58.222.185.248 1113 22SSH_TTY=/dev/pts/6ANT_HOME=/opt/apache/apache-ant-1.8.1USER=rootLS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:SSH_AUTH_SOCK=/tmp/ssh-amfuW25778/agent.25778MAIL=/var/spool/mail/rootPATH=/usr/kerberos/sbin:/usr/kerberos/bin:/opt/apache/apache-ant-1.8.1/bin:/usr/java/jdk1.6.0_20/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binINPUTRC=/etc/inputrcPWD=/rootJAVA_HOME=/usr/java/jdk1.6.0_20LANG=zh_CN.GB18030SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpassSHLVL=1HOME=/rootLOGNAME=rootCVS_RSH=sshSSH_CONNECTION=58.222.185.248 1113 218.23.142.44 22LESSOPEN=|/usr/bin/lesspipe.sh %sG_BROKEN_FILENAMES=1_=/bin/env[root@www.linuxidc.com ~]# exportdeclare -x ANT_HOME="/opt/apache/apache-ant-1.8.1"declare -x CVS_RSH="ssh"declare -x G_BROKEN_FILENAMES="1"declare -x HISTSIZE="1000"declare -x HOME="/root"declare -x HOSTNAME="web"declare -x INPUTRC="/etc/inputrc"declare -x JAVA_HOME="/usr/java/jdk1.6.0_20"declare -x LANG="zh_CN.GB18030"declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"declare -x LOGNAME="root"declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"declare -x MAIL="/var/spool/mail/root"declare -x OLDPWDdeclare -x PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/opt/apache/apache-ant-1.8.1/bin:/usr/java/jdk1.6.0_20/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"declare -x PWD="/root"declare -x SHELL="/bin/bash"declare -x SHLVL="1"declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"declare -x SSH_AUTH_SOCK="/tmp/ssh-amfuW25778/agent.25778"declare -x SSH_CLIENT="58.222.185.248 1113 22"declare -x SSH_CONNECTION="58.222.185.248 1113 218.23.142.44 22"declare -x SSH_TTY="/dev/pts/6"declare -x TERM="linux"declare -x USER="root"[root@www.linuxidc.com ~]# set | moreANT_HOME=/opt/apache/apache-ant-1.8.1BASH=/bin/bashBASH_ARGC=()BASH_ARGV=()BASH_COMPLETION=/etc/bash_completionBASH_COMPLETION_DIR=/etc/bash_completion.dBASH_LINENO=()BASH_SOURCE=()BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-RedHat-linux-gnu")BASH_VERSION='3.2.25(1)-release'COLORS=/etc/DIR_COLORSCOLUMNS=132CVS_RSH=sshDIRSTACK=()EUID=0GROUPS=()G_BROKEN_FILENAMES=1HISTFILE=/root/.bash_historyHISTFILESIZE=1000HISTSIZE=1000HOME=/rootHOSTNAME=webHOSTTYPE=i686IFS=$' \t\n'INPUTRC=/etc/inputrcJAVA_HOME=/usr/java/jdk1.6.0_20LANG=zh_CN.GB18030LESSOPEN='|/usr/bin/lesspipe.sh %s'LINES=41LOGNAME=rootLS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:'MACHTYPE=i686-RedHat-linux-gnuMAIL=/var/spool/mail/rootMAILCHECK=60OPTERR=1OPTIND=1OSTYPE=linux-gnu--More--

樣本二 service命令的原始碼中用到了env命令

可以看出service在執行別的命令式,只有三個環境變數:LANG, PATH, TERM。

[root@www.linuxidc.com ~]# grep env /sbin/service
env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" status
env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" stop
env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" start
env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS}
[root@www.linuxidc.com ~]#

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.