`

我使用过的Linux命令之env - 显示当前用户的环境变量

阅读更多

我使用过的Linux命令之env - 显示当前用户的环境变量

本文链接:http://codingstandards.iteye.com/blog/994906   (转载请注明出处)

 

用途说明

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 “导出”变成一个用户变量。(注:此处来自资料1)

 

常用方式

格式:env

打印当前用户的环境变量。

 

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

使用指定的环境变量执行命令行<command-line>。

 

使用示例

示例一 比较env,set和export

set命令打印的信息最多,包括自定义函数等,以至于要使用more才能看得清。

[root@web ~]# env
HOSTNAME=web
TERM=linux
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=58.222.185.248 1113 22
SSH_TTY=/dev/pts/6
ANT_HOME=/opt/apache/apache-ant-1.8.1
USER=root
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:
SSH_AUTH_SOCK=/tmp/ssh-amfuW25778/agent.25778
MAIL=/var/spool/mail/root
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
INPUTRC=/etc/inputrc
PWD=/root
JAVA_HOME=/usr/java/jdk1.6.0_20
LANG=zh_CN.GB18030
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SHLVL=1
HOME=/root
LOGNAME=root
CVS_RSH=ssh
SSH_CONNECTION=58.222.185.248 1113 218.23.142.44 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/bin/env
[root@web ~]# export
declare -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 OLDPWD
declare -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@web ~]# set | more
ANT_HOME=/opt/apache/apache-ant-1.8.1
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_COMPLETION=/etc/bash_completion
BASH_COMPLETION_DIR=/etc/bash_completion.d
BASH_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_COLORS
COLUMNS=132
CVS_RSH=ssh
DIRSTACK=()
EUID=0
GROUPS=()
G_BROKEN_FILENAMES=1
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/root
HOSTNAME=web
HOSTTYPE=i686
IFS=$' \t\n'
INPUTRC=/etc/inputrc
JAVA_HOME=/usr/java/jdk1.6.0_20
LANG=zh_CN.GB18030
LESSOPEN='|/usr/bin/lesspipe.sh %s'
LINES=41
LOGNAME=root
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;3
2:*.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-gnu
MAIL=/var/spool/mail/root
MAILCHECK=60
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
--More--

 

示例二 service命令的源代码中用到了env命令

可以看出service在执行别的命令式,只有三个环境变量:LANG, PATH, TERM。

[root@web ~]# 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@web ~]#

 

问题思考

相关资料

【1】飞诺网 Linux的set,env和export的区别是什么
http://dev.firnow.com/course/6_system/linux/Linuxjs/2008913/142616.html
【2】linvar linux set,env, export
http://linvar.iteye.com/blog/584696
【3】鸟哥的私房菜 用 env 觀察環境變數與常見環境變數說明
http://linux.vbird.org/linux_basic/0320bash.php#env
【4】金星专栏 linux profile of env
http://blog.csdn.net/liujinxing/archive/2008/10/24/3139044.aspx

 

返回 我使用过的Linux命令系列总目录

 

2
0
分享到:
评论

相关推荐

    cross-env-设置环境变量跨平台

    `cross-env`的核心在于它能够创建一个shell命令,该命令在执行时会根据当前的操作系统设置环境变量。它通过解析命令行参数并确保在所有平台上正确地执行`set`(在Windows上)或`export`(在Unix-like系统上)来实现...

    linux 系统管理篇--环境变量

    - 可以通过`export`命令来定义一个环境变量,并使用`echo`命令来显示它的值。例如: ```bash $ export WELCOME="Hello!" $ echo $WELCOME Hello! ``` 3. **查看所有环境变量:** - 使用`env`命令可以列出...

    Linux环境变量命令说明

    ### Linux环境变量命令详解 #### 一、环境变量概述 在Linux系统中,环境变量扮演着极其重要的角色,它们不仅定义了用户的工作环境,还决定了应用程序的行为方式。环境变量是一组特殊的变量,由一系列键值对组成,...

    Linux环境变量设置总结

    可以使用env命令来显示所有的环境变量。 ``` $ env SSH_AGENT_PID=1875 HOSTNAME=lqm SHELL=/bin/bash TERM=xterm HISTSIZE=1000 …… ``` 环境变量是 Linux 操作系统中一个非常重要的概念,它决定了系统的行为和...

    linux超级基础系列-shell变量(本地变量和环境变量)

    - 使用`env`命令查看当前环境中的所有环境变量: ```sh env ``` - **示例2:删除环境变量** - 使用`unset`命令删除环境变量: ```sh unset VARIABLE-NAME ``` - **示例3:特殊的环境变量** - **CDPATH**...

    Linux 环境变量设置

    1. **查看当前环境变量:** - `echo $HOME`:显示用户的家目录,例如 `/home/redbooks`。 - `env`:列出所有的环境变量,例如: ```plaintext HOSTNAME=redbooks.safe.org PVM_RSH=/usr/bin/rsh Shell=/bin/...

    linux 环境变量 配置 实用技巧 配置Linux 操作系统 环境变量

    - 使用 `env` 命令可以查看所有环境变量。 - 使用 `set` 命令可以查看所有本地定义的Shell变量。 #### 八、个性化提示符 - 修改 `PS1` 和 `PS2` 变量可以自定义提示符。例如,要将提示符改为 `"Hello,MyNewPrompt:)...

    cross-env-6.0.2.zip

    2. **简单易用**:使用cross-env设置环境变量就像运行一个简单的命令一样,例如`npx cross-env NODE_ENV=production`,这样就无需关心当前操作系统对环境变量的处理方式。 3. **命令行接口**:cross-env可以与其他...

    env命令 显示和定义环境变量

    env命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用”-“作为参数选项时,隐藏了选项”-i”的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。 如果使用env命令在新...

    Linux环境变量设置--总结.pdf

    4. **env命令**:显示当前环境中的所有环境变量,而`set`命令则显示所有本地定义的Shell变量,包括环境变量和非环境变量。 5. **read命令**:配合`export`可用于从用户输入创建环境变量,例如`read -p "Enter a ...

    Linux之查看环境变量.docx

    使用 export 命令可以显示当前系统中所有的环境变量,和 env 命令类似。但是,export 命令的最大功能就在于将自定义变量变成环境变量。 例如,输入 `export MY_VAR="Hello World"` 命令后,MY_VAR 变量将被定义为...

    Linux命令大全-2024

    - `env`:显示所有环境变量。 - `export`:查看环境变量 (在 bash 下)。 - `fgconsole`:显示活动的虚拟终端数目。 - `file`:确定文件类型。 - `file -s /dev/sd*`:查看设备信息。 - 查看系统状态: - `...

    slurm-env-config:slurm-env-config从环境变量写入slurm conf文件

    通过设置这些环境变量,`slurm-env-config`能够生成符合当前环境的`slurm.conf`配置文件。运行`slurm-env-config`命令后,它会读取这些环境变量,然后按照SLURM配置文件的格式生成配置内容,最终写入到`slurm.conf`...

    Linux 环境变量

    要显示当前的环境变量,你可以使用`echo`命令,例如`echo $HOME`来显示用户主目录。`set`命令可以展示所有本地定义的Shell变量,而`env`命令则用于显示所有环境变量。 设置环境变量的方法有多种。对于所有用户永久...

    Linux 环境变量 设置总结

    `env`命令可以用来显示系统中所有当前生效的环境变量,而`set`命令则会列出所有当前Shell中定义的变量,包括本地定义的Shell变量。如果需要移除某个环境变量,可以使用`unset`命令,如`unset TEST`将删除名为`TEST`...

    定制Linux系统环境变量 .pdf

    3. **使用env命令显示所有的环境变量**: ```bash env ``` 此命令会列出当前环境中所有的环境变量及其值。 4. **使用set命令显示所有本地定义的Shell变量**: ```bash set ``` 显示所有已定义的Shell变量。...

    Linux下如何设置环境变量.docx

    * 使用 env 命令显示所有的环境变量:$ env * 使用 set 命令显示所有本地定义的 Shell 变量:$ set * 使用 unset 命令来清除环境变量:$ unset TEMP_KEVIN * 使用 readonly 命令设置只读变量:$ readonly TEMP_KEVIN...

    最新-Linux常用命令大全-非常实用

    Linux 操作系统是当今最流行的操作系统之一,作为一个 Linux 用户或管理员,掌握常用的 Linux 命令是非常重要的。本文将总结一些常用的 Linux 命令,涵盖系统管理、用户管理、磁盘管理、文件管理、备份与压缩、网络...

    linux一些标准的环境变量.docx

    在Linux操作系统中,环境变量扮演着非常重要的角色,它们是系统配置的基础之一,对于系统的正常运行至关重要。本文将详细介绍几个常见的Linux环境变量,包括`SHELL`、`LANG`、`PATH`、`MANPATH`、`INPUTRC`、`BASH_...

    linux的环境变量

    - `env`命令用于显示所有环境变量。 - `set`命令则可以显示所有本地Shell变量,包括环境变量和非环境变量。 3. **删除环境变量**: - 使用`unset`命令可以移除环境变量。例如,`unset TEST`将删除名为TEST的环境...

Global site tag (gtag.js) - Google Analytics