首页 > 技术文章 > linux 系统中 获取环境变量、 获取环境变量+自定义变量

liujiaxin2018 2022-01-15 00:18 原文

1、获取环境变量

export

env

 

2、测试export 和 env:

root@PC1:/home/test# ls
root@PC1:/home/test# export > export.txt  ## 生成文件
root@PC1:/home/test# ls
export.txt
root@PC1:/home/test# env > env.txt   ## 生成文件
root@PC1:/home/test# ls
env.txt  export.txt
root@PC1:/home/test# head env.txt
SHELL=/bin/bash
window=100000
LC_ADDRESS=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_MONETARY=zh_CN.UTF-8
PWD=/home/test
LOGNAME=root
XDG_SESSION_TYPE=tty
MOTD_SHOWN=pam
HOME=/root
root@PC1:/home/test# head export.txt
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus"
declare -x DISPLAY=":0.0"
declare -x HOME="/root"
declare -x LANG="en_US.UTF-8"
declare -x LC_ADDRESS="zh_CN.UTF-8"
declare -x LC_IDENTIFICATION="zh_CN.UTF-8"
declare -x LC_MEASUREMENT="zh_CN.UTF-8"
declare -x LC_MONETARY="zh_CN.UTF-8"
declare -x LC_NAME="zh_CN.UTF-8"
declare -x LC_NUMERIC="zh_CN.UTF-8"
root@PC1:/home/test# awk '{print $3}' export.txt | sed 's/"//g' | head
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
DISPLAY=:0.0
HOME=/root
LANG=en_US.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_MONETARY=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_NUMERIC=zh_CN.UTF-8
root@PC1:/home/test# awk '{print $3}' export.txt | sed 's/"//g' | sort > export2.txt  ## 保留两个文件的重合部分,排序
root@PC1:/home/test# sort env.txt env2.txt
sort: cannot read: env2.txt: No such file or directory
root@PC1:/home/test# sort env.txt > env2.txt  ##排序
root@PC1:/home/test# diff export2.txt env2.txt  ## 比较,发现两个变量实质内容是一样的,说明env和export都是生成环境变量的
14,15c14,15
< LESSCLOSE=/usr/bin/lesspipe
< LESSOPEN=|
---
> LESSCLOSE=/usr/bin/lesspipe %s %s
> LESSOPEN=| /usr/bin/lesspipe %s
25,26c25,26
< SSH_CLIENT=192.168.3.4
< SSH_CONNECTION=192.168.3.4
---
> SSH_CLIENT=192.168.3.4 1392 22
> SSH_CONNECTION=192.168.3.4 1392 192.168.3.106 22
29a30
> _=/usr/bin/env
root@PC1:/home/test#

 

3、declare 和 set获取环境变量和自定义变量

测试:

root@PC1:/home/test# ls
root@PC1:/home/test# declare > declare.txt
root@PC1:/home/test# ls
declare.txt
root@PC1:/home/test# set > set.txt
root@PC1:/home/test# ls
declare.txt  set.txt
root@PC1:/home/test# diff declare.txt set.txt  ## 两者是一样的
root@PC1:/home/test# wc -l *
  1684 declare.txt
  1684 set.txt
  3368 total

 

4、自定义变量和 export 处理变量后的区别

export处理后的变量是环境变量,相当于全局变量,在自进程中可见。

自定变量相当于局部变量,仅在当前环境起作用

测试:

root@PC1:/home/test# ls
root@PC1:/home/test# test_env=100   ##自定义变量
root@PC1:/home/test# export | grep "test_env"  ## 在环境变量中无法检索到
root@PC1:/home/test# declare | grep "test_env"  ## 可以在自定义变量中检索到
test_env=100
root@PC1:/home/test# export test_env2=200     ## 用export处理自定义变量
root@PC1:/home/test# export | grep "test_env2"  ## 可以在环境变量中检索到,说明export的作用是将自定义变量升级为环境变量
declare -x test_env2="200"
root@PC1:/home/test# declare | grep "test_env2"  ## 也可以在自定义变量检索到
_=test_env2=200
test_env2=200

 

参考:http://c.biancheng.net/linux/export.html

 

推荐阅读