如何在 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
默认情况下,"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. 将变量名称设置为“
另一种不太常见的方法是将要清除的变量的名称设置为''
(Empty)。这将清除当前会话中活动的局部变量的值。
注意- 您甚至可以使用并更改系统或用户环境变量的值,但更改只会反映在当前终端会话中,并且不会是永久性的。
了解如何在 Linux 中创建用户范围和系统范围的环境变量
在本部分中,我们将通过以下示例学习如何在 Linux 中设置或取消设置本地、用户和系统范围的环境变量:
1. 在 Linux 中设置和取消设置局部变量
a.)在这里,我们创建一个局部变量VAR1
并将其设置为任意值。然后,我们使用 unset 删除该局部变量,最后删除该变量。
$ VAR1='Example is best Site for Linux Articles' $ echo $VAR1 $ unset VAR1 $ echo $VAR1
b.)创建局部变量的另一种方法是使用export
命令。创建的局部变量将可用于当前会话。要取消设置变量,只需将变量的值设置为''
。
$ export VAR='Example is best Site for Linux Articles' $ echo $VAR $ VAR= $ echo $VAR
c.)在这里,我们创建了一个局部变量VAR2
并将其设置为一个值。然后,为了运行一个命令,暂时清除所有本地和其他环境变量,我们执行了'env –i'
命令。此命令在此处通过清除所有其他环境变量来执行 bash shell。在'exit'
调用的 bash shell 上输入后,所有变量都将恢复。
$ VAR2='Example 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 Example Home'
现在运行以下命令来进行新的更改并测试它。
$ source .bashrc $ echo $CD
要删除此变量,只需删除.bashrc文件中的以下行并重新获取它:
b.)要添加可用于远程登录会话的变量(即当您从远程系统 ssh 到用户时),请修改.bash_profile
文件。
$ vi .bash_profile
.bash_profile
在文件底部添加以下行。
export VAR2='This is Example Home'
当获取此文件时,变量将在您 ssh 到此用户时可用,但在打开任何新的本地终端时不可用。
$ source .bash_profile $ echo $VAR2
这里,VAR2
最初不可用,但是在对本地主机上的用户执行 ssh 时,变量变为可用。
$ ssh example@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文件中的条目并重新启动或再次登录。
注意:当您获取文件时更改才会生效。但如果没有,您可能需要注销并重新登录。
结论
因此,这些是我们可以修改环境变量的几种方法。如果您发现任何新的和有趣的技巧,请在您的评论中提及。