Linux中的export命令

时间:2020-03-05 15:25:16  来源:igfitidea点击:

Linux中的export命令用于创建环境变量。
我们可以像这样使用它:

export myvar

或者类似这样的速记即可立即为其分配值:

export myvar=5

我们可以使用echo命令查看导出变量的值:

echo $myvar

要使更改永久生效,应将其添加到~/.bashrc文件中。

那只是快速总结。
让我们对其进行详细了解以更好地理解它。

了解导出命令的工作方式

在下面的示例中,我声明了一个shell变量var并为其分配了一个值3.
目前,这是一个shell变量。

Hyman@theitroad:~$var=3
Hyman@theitroad:~$echo $var
3

如果我退出终端并打开一个新终端,则此shell变量将消失。
如果我想在Shell脚本中使用此变量,它将无法正常工作。
同样,如果我切换用户(并由此用户启动一个新的shell程序),则该shell程序变量将不可用:

Hyman@theitroad:~$su theitroad
Password: 
Hyman@theitroad:/home/igi$echo $var

现在,让我们回到上一个用户(以及我声明了shell变量的前一个shell)。
我们可以看到该变量仍在此处(因为我们尚未终止此Shell会话):

Hyman@theitroad:/home/igi$exit
exit
Hyman@theitroad:~$echo $var
3

因此,现在,如果我在此处对变量var使用export命令,它将成为一个环境变量,并且该会话中的所有子shell,用户和shell脚本都可以使用它。

Hyman@theitroad:~$export var
Hyman@theitroad:~$echo $var
3
Hyman@theitroad:~$su theitroad
Password: 
Hyman@theitroad:/home/igi$echo $var
3

我们可以使用printenv命令检查所有环境变量:

printenv

使用bashrc文件将导出的Shell变量设为“永久”

但是斗争并没有就此结束。
如果关闭会话,退出终端,注销或者重新引导系统,则环境变量将再次消失。

这就是为什么通常的做法是将导出命令添加到Shell的运行时配置(rc)文件中。

每个shell程序都有一个rc文件,该文件位于用户的主目录中,该文件用于在启动shell程序时确定变量和其他配置。
作为用户,我们可以使用此rc文件来自定义Shell及其行为。

如果使用的是bash shell,则应在~/.bashrc中有一个bashrc文件。
我们可以在文本编辑器(如Vim)中编辑此文件,也可以仅将export var = 3(或者要导出的内容)添加到此文件。

完成后,我们应该使用source命令使更改立即可用。

一个好的做法是将所有用户定义的环境变量都放在一个位置。

为什么要使用export命令?

导出命令export最常见的用途之一是当我们想向路径中添加一些内容时,以便Linux系统找到特定的命令/可执行文件。

例如,如果安装了maven并且希望能够运行它,则应将maven可执行文件的目录位置添加到以下路径中:

export PATH=/opt/maven/bin:$PATH

它有什么作用?
它将此目录位置添加到路径。
当我们尝试在Linux中运行命令时,系统会在PATH变量中提到的目录中搜索其可执行文件(通常在bin目录中)。

Hyman@theitroad:~$echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Hyman@theitroad:~$export PATH=/opt/maven/bin:$PATH
Hyman@theitroad:~$echo $PATH
/opt/maven/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

温馨提示:从导出列表中删除变量

假设我们要删除“已导出”变量。
我们可以通过以下方式使用negate选项:

export -n myvar