在依据Linux和Unix的系统中,环境变量是一组动态取名字标值,存储在系统中,在shell或子shell运作的应用程序中运用。
简单来说,环境变量是具有名称和关联系数变量。环境变量允许您自定义系统的工作环境以及系统系统软件的行为。
例如,环境变量可以储放默认设置设置文本处理或默认浏览器的信息,可执行文件路线或系统地域设置和键盘布局设置。
在教学中,我们在这里描述如何加载和设置环境变量。
环境变量和shell变量具有健值对的格式。变量的名称区分大小写。遵循国际惯例,环境变量应该使用大写标志符。
为变量分配好多个值后,必须采用炉灶:
标志符分隔,例如PATH环境变量。 =
标识附近并没空格符。
变量可分为两种,环境变量和shell变量。环境变量是系统范围内可用的变量,由所产生的shell子进程弘扬。
Shell变量是仅适用于目前shell聊天的变量。每一种shell操作程序,如zsh
和bash
,都有自己的一组内部构造shell变量。
好多个命令适用于在Linux中例举和设置环境变量包括env
,printenv
,set
,unset
,export
。
env
命令允许你在自定环境变量在目前的shell谈话中。在没有基本参数的情况之下使用时,这将会打印目前环境变量的列表。
printenv
命令打印所有或特定环境变量。set
命令设置删掉shell变量。在没有基本参数的情况之下使用时,这将会打印所有变量的列表,包括环境变量和shell变量以及shell函数。
unset
命令删除shell和环境变量。export
命令设置环境变量。
例举环境变量
例举环境变量的广泛应用命令是printenv
。如果将变量的名称作为传送数据给命令,则仅打印该变量标值。
倘若未找到基本参数,printenv
打印所有环境变量的列表,每行一个变量。
printenv HOME
命令打印HOME
的环境变量标值,这将会打印导出来目前登录顾客的路经,本身就是顾客的家目录。
您还可以向printenv
命令传输好多个基本参数,例如命令printenv LANG PWD
很有可能打印语言表达能力设置的环境变量和文档列表。
要是没有基本参数运行printenv
或者env
命令,这将会说明所有环境变量的列表。
printenv #打印所有环境变量
printenv HOME #打印HOME 环境变量
printenv LANG PWD #打印好多个环境变量
那也是一些常见的环境变量。USER
目前登录的消费者。HOME
用户状态的家目录。EDITOR
要所使用的默认设置设置文本处理。也是你在智能终端中撰写时将要所使用的在线编辑。
SHELL
用户状态shell路线,例如bash或zsh。LOGNAME
用户状态的名称。
PATH
是运行命令时要搜索的文件名称列表。如果你运行命令时,会自动照此顺序搜索这类文件名称并且用第一个找到的可执行文件。
LANG
目前的学习环境设置。TERM
目前的模拟智能终端。MAIL
储放用户状态电子邮箱部位。
printenv
和env
命令只打印环境变量。如果要得到所有变量的列表,包括环境变量和shell变量以及shell函数,能用set
命令。
set
命令不需要任何基本参数。命令将展现所有变量的列表,因此您可能想把导出来通过管道传递给less
命令set | less
。
您还可以运用echo命令打印shell变量。例如命令echo $BASH_VERSION
打印BASH_VERSION
要运行的变量标值。
set #打印环境变量以及shell变量
set | less #分页查询查看变量
echo $BASH_VERSION #打印shell变量
设置环境变量
为了更好地说明Shell和环境变量之间的区别,我们在这里从设置Shell变量慢慢,接着转到环境变量。
MY_VAR='myfreax'
命令运用名称MY_VAR
合值myfreax
设置一个新的shell变量,这其实不是命令,那般shell过程的句法。
您可以使用grep过滤set命令的输出来验证变量是不是已经设置。命令set | grep MY_VAR
将打印MY_VAR
变量标值myfreax
。
你能运用printenv
命令检查此变量是否为环境变量,倘若导出来为空,告诉我们变量并非环境变量。
大伙儿可以尝试在子shell中打印MY_VAR
变量,运行命令bash -c 'echo $MY_VAR'
,我们将获得一个空导出来。
因为bash -c
命令很有可能打开一个shell会话实例,目前shell会话设置的环境变量不易被子shell会话弘扬但传承环境变量。
MY_VAR='myfreax'
set | grep MY_VAR
printenv MY_VAR # 打印空字符串
bash -c 'echo $MY_VAR' #在子shell中打印shell变量,打印空字符串
export
命令用于设置环境变量。有效的方法将shell变量导出为环境变量,例如命令export MY_VAR=myfreax
,将MY_VAR
设置为环境变量。
命令printenv MY_VAR
打印环境变量MY_VAR
标值,这将会打印myfreax
。假如你尝试在子shell中打印环境变量,子shell很有可能弘扬父shell进度环境变量。
bash -c 'echo $MY_VAR'
命令启动子shell会话,然后使用echo打印MY_VAR
环境变量这时候您将在智能终端上打印变量标值myfreax
。
您还可以在一行中设置环境变量,例如命令export MY_NEW_VAR="My New Var"
。
以这种方式创建的环境变量仅仅在现阶段谈话中能用。假如你打开一个新的shell会话或者您注销目前的登录,则所有变量都将丢失。
export MY_VARR=myfreax
printenv MY_VAR #myfreax
bash -c 'echo $MY_VAR' #在子shell中打印环境变量,打印空字符串R=myfreax
分布式锁环境变量
想让环境变量分布式锁,你需要在bash环境变量中定义这类变量。在大多数Linux发行版中,如果你运作新会话时,即将迎来下列word里加载环境变量。
/etc/environment
运用此文本文档设置系统区域地图环境变量。此文档里的变量运用FOO=bar"
文件类型设置环境变量。
/etc/profile
仅需输入bash登录shell,就会加载此word里设置的变量。在这儿word里声明环境变量,需要使用export
命令设置环境变量。
每个用户shell都是有一定特定环境变量。例如,假如你运用Bash,则可以在~/.bashrc
文本文档声明变量。
~/.bashrc
是一个shell脚本,因此设置环境变量时,你需要使用export 命令,例如export PATH="$HOME/bin:$PATH"
修改PATH
环境变量。
要将新环境变量加载到目前shell谈话中,挑选source
命令。source ~/.bashrc
命令很有可能加载~/.bashrc
表述的变量,source能是一切文本文档。
在指南中,大伙儿为大家彰显了如何设置和例举环境与shell变量。假如你有任何疑问,请随时。
