你们好,又碰面了,我是大家的同事全栈君。
明天小编要跟你们分享的文章是关于Linux系统中的环境变量该怎么设置与查看。你们都晓得,在Linux系统中,有环境变量和
变量这两种变量。
环境变量是在程序及其子程序中全局可用的,经常拿来存储像默认的文本编辑器或则浏览器,以及可执行文件的路径等等这样的信息。而Shell变量仅在当前
Shell中可用,可以拿来储存当前用户的ID等信息。
这么哪些是环境变量,哪些是Shell变量,该怎么设置和查看这两种变量呢?下边来和小编一起看一看吧!
一、环境变量
环境变量是以通配符对的方式实现的,是在整个系统范围内都可用的变量,并由所有派生的子进程和Shell
承继。而环境变量的名称是分辨大小写的,且一般以小写的方式命名(MYVAR1,MYVAR2…)
单个值的环境变量看上去是这样的:
KEY=value1
假如你想要将多个值赋于环境变量,则一般用逗号(:)作为分隔符。每一对通配符对最终看上去是这样子的:
KEY=value1:value2:value3
假如要赋于环境变量的值包含空格linux软件linux查看进程,则须要使用冒号:
KEY=”valuewithspaces”
二、Shell变量
Shell变量是专门用于设置或定义它们的Shell中的变量。每位Shelllinux系统环境变量路径,比如zsh和bash,都有一组自己内部的Shell
变量。它们一般用于跟踪临时数据,例如当前工作目录,而用法则与环境变量相同。
假如你想让Shell变量作为全局变量使用,可以使用export指令:
$exportMYVAR=
echo
$env|grepMYVARMYVAR=
三、常见的环境变量与Shell变量
一些环境变量和Shell变量是十分有用的,而且常常会被引用。以下是一些常见的,你之后可能会碰到的环境变量:
变量名涵义
TERM这指定运行Shell时要模拟的终端类型。可以针对不同的操作需求模拟不同的硬件终端。不过,你一般不须要管这个变量。
USER当前登入的用户
PWD当前的工作目录
OLDPWD上一个工作目录,这个变量由Shell保存,便于通过执行cd–切换回上一个工作目录。
LS_COLORS这定义了ls指令的颜色输出代码,用于向ls
指令添加颜色输出。这一般用于分辨不同的文件类型并使用户对文件类型等信息一目了然。
MAIL当前用户邮箱的路径
PATH系统在查找指令时会检测的目录列表。当用户输入一个指令时,系统将按此目录列表的次序检测目录,以找寻相应的可执行文件。
LANG当前的语言和本地化设置,包括字符编码。
HOME当前用户的主目录
_上一个被执行的指令
不仅以上这种环境变量,你也可能会时常遇见以下这种Shell变量:
变量名涵义
BASHOPTS执行bash时所启用的选项列表,这对于确定Shell环境是否依照预期的形式运行很有帮助。
BASH_VERSION人类可读格式的正在执行的bash版本
BASH_VERSINFO机器可读格式的正在执行的bash版本
COLUMNS用于设置勾画到屏幕上的输出信息的宽的列数
DIRSTACKpushd和popd可用的目录堆栈。
HISTFILESIZE储存到文件中的历史记录的行数。默认为~/.bash_history文件的行数。
HISTSIZE显存中容许储存的历史记录的行数,即histroy命令所能复印下来的行数。
HOSTNAME计算机的主机名
IFS内部数组分隔符,用于分隔命令行上的输入。默认以空格作为分隔符。
PS1定义主命令提示符。这用于定义启动Shell会话时命令提示符的外型。而PS2用于申明跨越多行的命令的命令提示符。
SHELLOPTS可以用set命令设置的Shell选项。
UID当前用户的UID(用户ID)
四、查看Shell变量与环境变量
在Linux系统中,有以下几种命令可以让你查看环境变量:
env—该命令可以让你在自定义的环境中运行程序,但是不须要改变当前的环境。当不带参数使用env命令时,它会复印出当前的环境变量列表。
printenv—可以复印出所有的或则指定的环境变量。
set—该命令可以设置或则删掉Shell变量。当不带参数使用set命令时,它将复印出包括环境变量与Shell变量在内的所有变量以及
Shell函数的列表。
默认状态下,env和printenv的功能是完全相同的:
$printenv
SSH_CONNECTION=10.0.2.23718210.0.2.1522
LESSCLOSE=/usr/bin/lesspipe%s%s
LANG=C.UTF-8
XDG_SESSION_ID=5
USER=Alvin
MYVAR=
PWD=/home/Alvin
HOME=/home/Alvin
SSH_CLIENT=10.0.2.23718222
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/Alvin
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LOGNAME=Alvin
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/
sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=|/usr/bin/lesspipe%s
_=/usr/bin/printenv
只有在更具体的功能上能够彰显出env命令与printenv命令的区别。诸如,使用printenv命令,你可以恳求单个变量的值:
$printenvSHELL
/bin/bash
$printenvHOME
/home/Alvin
$printenvMYVAR
env命令可通过将一组变量传递给命令来更改程序运行的环境:
envMYVAR=command_to_runcommand_options
printenv与env命令只能复印出环境变量,而假如你想复印出所有变量或则Shell函数的列表,你可以使用set指令。
$set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]=”2″[1]=”8″)
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]=”4″[1]=”4″[2]=”20″[3]=”1″
[4]=”release”[5]=”x86_64-pc-linux-gnu”)
BASH_VERSION=’4.4.20(1)-release’
COLUMNS=140
DIRSTACK=()
EUID=1000
GROUPS=()
HISTCONTROL=ignoreboth
HISTFILE=/home/alvin/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000HOME=/home/alvinHOSTNAME=ubuntu-bionic
HOSTTYPE=x86_64IFS=$’tn’LANG=C.UTF-8
LESSCLOSE=’/usr/bin/lesspipe%s%s’
LESSOPEN=’|/usr/bin/lesspipe%s’
LINES=35LOGNAME=Alvin
…..
该命令将显示一个包含所有变量的大列表,因而你可能会希望将输出传递给less命令。
$set|less
五、设置Shell变量与环境变量
Linux系统中可以设置环境变量的命令有以下几种:
set—该命令可以设置或则取消设置Shell变量。当不带参数使用set命令时,它将复印出包括环境变量与Shell变量在内的所有变量以及
Shell函数的列表。
unset—该命令可以删掉Shell变量以及环境变量。
export—该命令可以设置环境变量。
为了更好地理解Shell变量和环境变量之间的区别,我们先从设置Shell变量开始讲,之后再讲环境变量。
先从在当前会话中定义一个Shell变量开始:
$MYVAR=lxlinux
你可以用echo$MYVAR来验证变量是否已设置:
echoMYVAR
lxlinux
使用printenv命令检验该变量是否为环境变量:
$printenvMYVAR
没有输出返回,这就意味着MYVAR变量并不是环境变量。
export命令可以拿来设置环境变量。要创建环境变量,只需用export命令将Shell变量导入为环境变量:
$exportMYVAR
你可以用以下句子检验:
$printenvMYVARlxlinux
其实,你也可以只用一行代码来设置环境变量:
$exportMYNEWVAR=”MyNewVariable”
然而以这些方法创建的环境变量只能用于当前会话,假如你打开一个新的Shell会话,或则退出登入,所有的变量都将会遗失。
我们也可以将环境变量还原为Shell变量,或则将其完全删掉:
MYVAR变量被定义为环境变量,我们可以通过输入以下代码将其还原为Shell变量:
$export-nMYVAR
这样,MYVAR变量就不再是环境变量了,但仍然还是Shell变量。
无论是Shell变量还是环境变量,想要完全删掉变量,都可以使用unset命令来删掉:
$unsetMYVAR
可以通过以下句子来验证MYVAR变量早已删掉:
echoMYVAR
因为变量早已删掉了,所以没有任何返回。
六、环境变量的持久化
许多程序都须要使用环境变量来决定具体的执行方法,并且,我们并不希望每次启动新的Shell
会话时都必须重新设置重要的变量,因而我们须要将重要的环境变量写入配置文件中。
Shell会话有不同的启动方法,例如,联接到终端的交互式Shell与未联接到终端的非交互式Shell,还有登陆式Shell与非登陆式
Shelllinux系统环境变量路径,而bashShell会依照会话不同的启动方法而读取不同的配置文件。
然而,在大多数Linux发行版中,当你启动一个新的Shell会话时,通常就会从以下文件中读取环境变量:
/etc/environment—使用此文件来设置系统范围内可用的环境变量。
/etc/profile—每当bash登陆Shell时,就会加载此文件中设置的变量。
~/.bashrc—每个用户特定的Shell配置文件。诸如,假如你使用的是Bash,就可以在其中申明变量。
倘若要将新的环境变量加载到当前的Shell会话中,可以使用source命令:
$source~/.bashrc
假如你想要设置环境变量,你就可以考虑将其添加到/etc/profile、/etc/bash.bashrc或/etc/environment
文件中。
推论
以上就是小编明天为你们分享的关于Linux系统中的环境变量该怎么设置与查看的文章,在本文章中,我们了解了一些常见的环境变量和Shell
变量,也学习了怎样设置和查看这种变量,虽然这种变量始终都在我们的Shell
会话中,并且对许多程序都很有用,有好多常见的场景就会引用到这种变量。希望这对你的工作也有帮助。想要了解更多Linux相关知识记得关注达内Linux培训官网,最后祝福男子伴们工作顺利。
原创良许良许Linux
本文原创地址://gulass.cn/lxtzhjblysbl.html编辑:刘遄,审核员:暂无