env命令详解

导读:

Linux系统里的env命令可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令。

下面来比较一下 set,env和export命令的异同:

1 set命令显示当前shell的变量,包括当前用户的变量;
2 
3 env命令显示当前用户的变量;
4 
5 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才能看得清。

 1 [root@localhost ~]# set              #代码太多,只截取部分
 2 ABRT_DEBUG_LOG=/dev/null
 3 BASH=/usr/bin/bash
 4 BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
 5 BASH_ALIASES=()
 6 BASH_ARGC=()
 7 BASH_ARGV=()
 8 BASH_CMDS=()
 9 BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
10 BASH_LINENO=([0]="22")
11 BASH_REMATCH=()
12 BASH_SOURCE=([0]="/etc/profile.d/vte.sh")
13 BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
14 BASH_VERSION='4.2.46(2)-release'
15 COLORTERM=truecolor
16 COLUMNS=132
17 COMP_WORDBREAKS=$' \t\n"\'><=;|&(:'
18 DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-cpDBQiyzht,guid=0ebc3f2ba2d2fd3594778f225be6952d
19 DESKTOP_SESSION=gnome-classic
20 DIRSTACK=()
21 DISPLAY=:0
22 EUID=0
23 FINAL_LIST=
24 GDMSESSION=gnome-classic
25 GDM_LANG=zh_CN.UTF-8
26 GLUSTER_BARRIER_OPTIONS=$'\n        {enable},\n        {disable}\n'
27 GLUSTER_COMMAND_TREE=$'\n{gluster [\n        \n        {volume [\n                {add-brick\n                        {__VOLNAME}\n                },\n                {barrier\n                        {__VOLNAME\n                                [ \n        {enable},\n        {disable}\n ]\n                        }\n                },\n                {clear-locks\n                        {__VOLNAME}\n                },\n                {create},\n                {delete\n                        {__VOLNAME}\n                },\n                {geo-replication\n                        [ \n        {__VOLNAME [\n                {__SLAVEURL [\n                        {create [\n                                {push-pem\n                                        {force}\n                                },\n                                {force}\n                                ]\n                        },\n                        {start {force} },\n                        {status {detail} },\n                        {config},\n                        {pause {force} },\n                        {resume {force} },\n                        {stop {force} },\n                        {delete {force} }\n                            ]\n                },\n                {status}\n                   ]\n        },\n        {status}\n ]\n                },\n                {heal\n                        {__VOLNAME}\n                },\n        
28 
29 
30 
31 [root@localhost ~]# export                #代码太多,只截取部分
32 declare -x COLORTERM="truecolor"
33 declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-cpDBQiyzht,guid=0ebc3f2ba2d2fd3594778f225be6952d"
34 declare -x DESKTOP_SESSION="gnome-classic"
35 declare -x DISPLAY=":0"
36 declare -x GDMSESSION="gnome-classic"
37 declare -x GDM_LANG="zh_CN.UTF-8"
38 declare -x GNOME_DESKTOP_SESSION_ID="this-is-deprecated"
39 declare -x GNOME_SHELL_SESSION_MODE="classic"
40 declare -x HISTCONTROL="ignoredups"
41 declare -x HISTSIZE="1000"
42 declare -x HOME="/root"
43 declare -x HOSTNAME="localhost.localdomain"
44 declare -x IMSETTINGS_INTEGRATE_DESKTOP="yes"
45 declare -x IMSETTINGS_MODULE="IBus"
46 declare -x LANG="zh_CN.UTF-8"
47 declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
48 declare -x LOGNAME="zhou"
49 
50 
51 
52 [root@localhost ~]# env               #代码太多,只截取部分
53 XDG_VTNR=1
54 XDG_SESSION_ID=2
55 SSH_AGENT_PID=1808
56 HOSTNAME=localhost.localdomain
57 IMSETTINGS_INTEGRATE_DESKTOP=yes
58 XDG_MENU_PREFIX=gnome-
59 SHELL=/bin/bash
60 TERM=xterm-256color
61 VTE_VERSION=4602
62 HISTSIZE=1000
63 WINDOWID=27262982
64 IMSETTINGS_MODULE=IBus
65 USER=zhou
66 LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;
67                                                     

 

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

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

1 [root@localhost ~]# grep env /sbin/service 
2                   env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" status
3             env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" stop
4             env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" start
5    env -i PATH="$PATH" TERM="$TERM" SYSTEMCTL_IGNORE_DEPENDENCIES=${SYSTEMCTL_IGNORE_DEPENDENCIES} SYSTEMCTL_SKIP_REDIRECT=${SYSTEMCTL_SKIP_REDIRECT} "${SERVICEDIR}/${SERVICE}" ${ACTION} ${OPTIONS}
6    env -i PATH="$PATH" TERM="$TERM" SYSTEMCTL_IGNORE_DEPENDENCIES=${SYSTEMCTL_IGNORE_DEPENDENCIES} SYSTEMCTL_SKIP_REDIRECT=${SYSTEMCTL_SKIP_REDIRECT} "${ACTIONDIR}/${SERVICE}/${ACTION}" ${OPTIONS}

 

转载于:https://www.cnblogs.com/zhoul/p/9948888.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值