设置与查看Linux系统中的环境变量

sw

大家好,我是良许。

大家都知道,在Linux系统中,有环境变量和Shell变量这两种变量。

环境变量是在程序及其子程序中全局可用的,常常用来储存像默认的文本编辑器或者浏览器,以及可执行文件的路径等等这样的信息。而Shell变量仅在当前Shell中可用,可以用来存储当前用户的ID等信息。

那么什么是环境变量,什么是Shell变量,该如何设置和查看这两种变量呢?

接下来,让良许为你解答:

环境变量

环境变量是以键值对的形式实现的,是在整个系统范围内都可用的变量,并由所有派生的子进程和Shell继承。而环境变量的名称是区分大小写的,且通常以大写的形式命名(MYVAR1,MYVAR2)

单个值的环境变量看起来是这样的:

KEY=value1

如果你想要将多个值赋予环境变量,则通常用冒号(:)作为分隔符。每一对键值对最终看起来是这样子的:

KEY=value1:value2:value3

如果要赋予环境变量的值包含空格,则需要使用引号:

KEY="valuewithspaces"
Shell变量

Shell变量是专门用于设置或定义它们的Shell中的变量。每个Shell,例如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的功能是完全相同的:

$printenvSSH_CONNECTION=10.0.2.23718210.0.2.1522LESSCLOSE=/usr/bin/lesspipe%s%sLANG=_SESSION_ID=5USER=alvinMYVAR==/home/alvinHOME=/home/alvinSSH_CLIENT=10.0.2.23718222XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktopSSH_TTY=/dev/pts/0MAIL=/var/mail/alvinTERM=xterm-256colorSHELL=/bin/bashSHLVL=1LOGNAME=alvinXDG_RUNTIME_DIR=/run/user/1000PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binLESSOPEN=|/usr/bin/lesspipe%s_=/usr/bin/printenv

只有在更具体的功能上才能体现出env命令与printenv命令的区别。例如,使用printenv命令,你可以请求单个变量的值:

$printenvSHELL/bin/bash$printenvHOME/home/alvin$

env命令可通过将一组变量传递给命令来修改程序运行的环境:

envMYVAR=_to_runcommand_options

printenv与env命令只能打印出环境变量,而如果你想打印出所有变量或者Shell函数的列表,你可以使用set指令。

$setBASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histapp:interactive_comments:login_shell:progcomp:promptvars:sourcepathBASH_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=140DIRSTACK=()EUID=1000GROUPS=()HISTCONTROL=ignorebothHISTFILE=/home/alvin/.bash_historyHISTFILESIZE=2000HISTSIZE=1000HOME=/home/alvinHOSTNAME=ubuntu-bionicHOSTTYPE=x86_64IFS=#看完的都是真爱,点个赞再走呗?您的「三连」就是良许持续创作的最大动力!

2.后台回复【资料】【面试】【简历】获取精选一线大厂面试、自我提升、简历等资料。

)

文章版权声明:除非注明,否则均为纵投光影网原创文章,转载或复制请以超链接形式并注明出处。

上一个 晶合光电Micro-LED和DLP投影大灯亮相ALE 2025

下一个 75寸电视长宽多少厘米?75寸电视最佳观看距离?25年75寸电视推荐