如何在 Linux 中设置和取消设置本地、用户和系统范围的环境变量
环境变量是在shell中定义的一些特殊变量,程序在执行时需要用到。它们可以是系统定义的或用户定义的。系统定义变量是由系统设置并由系统级程序使用的变量。
例如PWD命令是一个很常见的系统变量,用于存储当前的工作目录。用户定义的变量通常由用户设置,可以为当前 shell 临时设置,也可以永久设置。设置和取消设置环境变量的整个概念围绕着一组文件、几个命令和不同的 shell。
从广义上讲,环境变量可以分为三种类型:
1.本地环境变量
为当前会话定义的一个。这些环境变量仅持续到当前会话,无论是远程登录会话还是本地终端会话。这些变量未在任何配置文件中指定,而是通过使用一组特殊的命令来创建和删除。
2、用户环境变量
这些是为特定用户定义的变量,每次用户使用本地终端会话登录或用户使用远程登录会话登录时都会加载这些变量。这些变量通常在以下配置文件中设置和加载:.bashrc
、.bash_profile
、.bash_login
、.profile
用户主目录中存在的文件。
3.系统范围的环境变量
这些是在系统范围内可用的环境变量,即适用于该系统上的所有用户。这些变量存在于以下目录和文件中的系统范围配置文件中:/etc/environment
、/etc/profile
、/etc/profile.d /
、/etc/bash.bashrc
。每次系统开机并由任何用户本地或远程登录时都会加载这些变量。
了解用户范围和系统范围的配置文件
在这里,我们简要描述上面列出的保存环境变量的各种配置文件,无论是系统范围的还是用户特定的。
.bashrc
该文件是用户特定的文件,每次用户创建新的本地会话时都会加载该文件,即简单地说,打开一个新终端。每次启动新的本地会话时,在此文件中创建的所有环境变量都会生效。
.bash_配置文件
该文件是用户特定的远程登录文件。每次用户远程登录(即使用 ssh 会话)时,都会调用此文件中列出的环境变量。如果此文件不存在,系统将查找 .bash_login
或 .profile
文件。
/etc/环境
该文件是系统范围的文件,用于创建、编辑或删除任何环境变量。在此文件中创建的环境变量可以在整个系统中被每个用户本地和远程访问。
/etc/bash.bashrc
系统范围的 bashrc
文件。每次用户打开本地终端会话时,该文件都会为每个用户加载一次。所有用户都可以访问此文件中创建的环境变量,但只能通过本地终端会话访问。当通过远程登录会话远程访问该计算机上的任何用户时,这些变量将不可见。
/etc/配置文件
系统范围的配置文件。系统上的每个用户都可以访问此文件中创建的所有变量,但前提是该用户的会话是远程调用的,即通过远程登录。本地登录会话将无法访问此文件中的任何变量,即当用户在本地系统上打开新终端时。
注意:使用系统范围或用户范围配置文件创建的环境变量可以通过删除来删除仅来自这些文件。只是在这些文件中每次更改后,要么注销并再次登录,要么只需在终端上键入以下命令以使更改生效:
source <file-name>
在 Linux 中设置或取消设置本地或会话范围的环境变量
可以使用以下命令创建本地环境变量:
var=value
OR
export var=value
这些变量是会话范围的,并且仅对当前终端会话有效。要清除这些会话范围的环境变量,可以使用以下命令:
1.使用环境
默认情况下,"env"
命令列出了当前所有的环境变量。但是,如果与 '-i'
开关一起使用,它会暂时清除所有环境变量,并允许用户在没有所有环境变量的情况下在当前会话中执行命令。
env –i [Var=Value]… command args…
这里,var=value
对应于您只想与此命令一起使用的任何本地环境变量。
env –i bash
将给 bash shell 暂时没有任何环境变量。但是,当您退出 shell 时,所有变量都将恢复。
2.使用unset
清除本地环境变量的另一种方法是使用 unset 命令。要临时取消设置任何本地环境变量,
unset <var-name>
其中,var-name
是您要取消设置或清除的局部变量的名称。
3. 将变量名称设置为”
另一种不太常见的方法是将要清除的变量的名称设置为 ''
(空)。这将清除当前会话中局部变量处于活动状态的值。
注意 – 您甚至可以使用和更改系统或用户环境变量的值,但更改只会反映在当前终端会话中,并且不会是永久性的。
了解如何在 Linux 中创建用户范围和系统范围的环境变量
在本节中,我们将通过以下示例学习如何在 Linux 中设置或取消设置本地、用户和系统范围的环境变量:
1. 在 Linux 中设置和取消设置局部变量
a.) 在这里,我们创建一个局部变量 VAR1
并将其设置为任意值。然后,我们使用 unset 来删除该局部变量,最后该变量被删除。
VAR1='TecMint is best Site for Linux Articles'
echo $VAR1
unset VAR1
echo $VAR1
b.) 创建局部变量的另一种方法是使用 export
命令。创建的局部变量将可用于当前会话。要取消设置变量,只需将变量的值设置为''
。
export VAR='TecMint is best Site for Linux Articles'
echo $VAR
VAR=
echo $VAR
c.) 在这里,我们创建了一个局部变量 VAR2
并将其设置为一个值。然后,为了运行临时清除所有本地和其他环境变量的命令,我们执行了 'env –i'
命令。这里的命令通过清除所有其他环境变量来执行 bash shell。在调用的 bash shell 上输入 'exit'
后,所有变量将被恢复。
VAR2='TecMint is best Site for Linux Articles'
echo $VAR2
env -i bash
echo $VAR2
2. 在 Linux 中设置和取消设置用户范围环境变量
a.) 修改主目录中的.bashrc
文件以导出或设置您需要添加的环境变量。之后来源文件,以使更改生效。然后您将看到变量(在我的例子中是'CD'
)生效。每次您为此用户打开新终端时,此变量都将可用,但不适用于远程登录会话。
vi .bashrc
将以下行添加到底部的 .bashrc
文件中。
export CD='This is TecMint Home'
现在运行以下命令来进行新的更改并进行测试。
source .bashrc
echo $CD
要删除此变量,只需删除 .bashrc 文件中的以下行并重新获取它:
b.) 要添加可用于远程登录会话的变量(即当您从远程系统 ssh 到用户时),请修改 .bash_profile
文件。
vi .bash_profile
将以下行添加到底部的 .bash_profile 文件中。
export VAR2='This is TecMint Home'
获取此文件时,当您通过 ssh 连接到此用户时,该变量将可用,但在打开任何新的本地终端时则不可用。
source .bash_profile
echo $VAR2
这里,VAR2
最初不可用,但在本地主机上对用户进行 ssh 操作时,该变量变得可用。
ssh tecmint@localhost
echo $VAR2
要删除此变量,只需删除您添加的 .bash_profile
文件中的行,然后重新获取该文件。
注意:每次您登录当前用户时,这些变量都可用,但其他用户则不可用。
3. 在 Linux 中设置和取消设置系统范围的环境变量
a.) 要添加系统范围的免登录变量(即,当任何用户打开新终端时,所有用户都可以使用该变量,但远程访问计算机的任何用户时都不可使用该变量),将该变量添加到 <代码>/etc/bash.bashrc 文件。
export VAR='This is system-wide variable'
之后,获取该文件。
source /etc/bash.bashrc
现在,每个用户打开任何新终端时都可以使用该变量。
echo $VAR
sudo su
echo $VAR
su -
echo $VAR
在这里,相同的变量可用于 root 用户和普通用户。您可以通过登录其他用户来验证这一点。
b.) 如果您希望任何环境变量在您计算机上的任何用户远程登录时可用,但在本地计算机上打开任何新终端时不可用,则需要编辑该文件– '/etc/profile'
。
export VAR1='This is system-wide variable for only remote sessions'
添加变量后,只需重新获取该文件即可。然后该变量就可用了。
source /etc/profile
echo $VAR1
要删除此变量,请从 /etc/profile
文件中删除该行并重新获取它的源。
c.) 但是,如果您想添加任何您希望在整个系统中可用的环境,无论是远程登录会话还是本地会话(即打开一个新的终端窗口)用户,只需导出 /etc/environment 文件中的变量即可。
export VAR12='I am available everywhere'
之后,只需获取文件,更改就会生效。
source /etc/environment
echo $VAR12
sudo su
echo $VAR12
exit
ssh localhost
echo $VAR12
在这里,正如我们所看到的,环境变量可用于普通用户、root 用户以及远程登录会话(此处为 localhost)。
要清除此变量,只需删除 /etc/environment 文件中的条目并重新获取它或重新登录即可。
注意:更改在您获取文件时生效。但是,如果没有,您可能需要注销并重新登录。
结论
因此,这些是我们修改环境变量的几种方法。如果您发现任何新的有趣的技巧,请在评论中提及。