我有时候会盲目地运行一些命令,以便完成任务。
最近我开始使用Jenkins,然后我不得不使用这个export
命令来运行Jenkins WAR archive。一般情况下,export
命令是用来做什么的?为什么要在设置好Jenkins home之后再运行这个命令来运行Jenkins?
我有时候会盲目地运行一些命令,以便完成任务。
最近我开始使用Jenkins,然后我不得不使用这个export
命令来运行Jenkins WAR archive。一般情况下,export
命令是用来做什么的?为什么要在设置好Jenkins home之后再运行这个命令来运行Jenkins?
sh
和相关的shell(如Bash)中,export
命令会将一个环境变量标记为要被“导出”到子进程中,以便子进程可以继承它们。export
:链接
引用如下:我猜你来自Windows背景。所以我会对它们进行对比(我对Linux也比较新)。我发现一个用户对我的评论的回复,在弄清楚事情方面非常有用。
在Windows中,变量可以是永久的或者不是。术语环境变量包括使用SET命令在cmd shell中设置的变量,以及当变量在Windows GUI中设置时,在注册表中设置并在新的cmd窗口中可见。
例如,在Windows中, set命令的文档“显示、设置或删除环境变量。如果不带参数,则显示当前的环境设置。”
在Linux中,set不会显示环境变量。它显示shell变量,而不将其称为环境变量。此外,Linux不使用set设置变量(除了位置参数和shell选项之外,在结尾处作为注释解释),只用于显示它们,即使是只显示shell变量。Windows用set设置和显示,例如set a=5
,但Linux不这样做。
/etc/profile
或/etc/.bashrc
,但除此之外,它们不是永久的。它们存储在RAM中。set
命令查看shell变量(请注意,与Windows不同,Linux中不使用set命令设置变量)。
set -o posix; set
(首先执行set -o posix
可以避免显示太多不必要的内容)。因此,set
显示shell变量。env
命令查看环境变量。a = 5
即可设置Shell变量。在这里,您可以看到使用zzz = 5
设置的shell变量zzz,并且在运行set
时显示出来,但它不会显示为环境变量。
在这里,我们看到使用export设置的yyy
是一个环境变量。并且可以看到它在shell变量和环境变量下都显示出来:
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
其他有用的问答:
https://unix.stackexchange.com/questions/176001/how-can-i-list-all-shell-variables
https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference
set asdf
,则会将$1设置为asdf,如果你输入echo $1
,则会看到asdf。set a=5
,它不会将变量a设置为5。它将位置参数$1设置为字符串"a=5"。因此,如果你在Linux中看到set a=5,除非有人真的想要那个字符串a=5在$1中,否则它很可能是一个错误。set -o verbose
以打开详细模式(默认情况下关闭,但这对此无影响)。或者您可以执行set +o verbose
以关闭详细模式。Windows没有这样的用法来使用其set命令。export
命令提供了更新当前 shell 会话有关导出变量更改的能力。您不必等待新的 shell 会话即可使用您更改的变量的值。a=5
然后 echo $a
,它会显示 5。但是你写道:“任何时候如果您更改任何变量值,shell 都无法检测到这种更改。这意味着您所做的更改在新的 shell 会话中生效。”那么它是如何更新 shell 会话而不使用 export 呢?您能举一个需要使用 export 的例子吗?当您在当前 shell 会话中设置变量时,该变量仅在该会话中可用,而无法在其他 shell 会话或子进程中使用。但是,在同一 shell 会话中,您可以使用该变量并对其进行更改。例如,如果您在终端中打开一个 shell,设置变量 a=5
,然后运行脚本文件,该脚本文件将能够使用变量 a
并显示其值为 5。export 命令用于使变量在当前 shell 会话之外可用,以便其他 shell 会话或子进程也可以使用该变量。例如,如果您想要将变量 a
导出到新的 shell 会话中,则可以使用命令 export a
。在新的 shell 会话中,您可以使用变量 a
并查看其值为 5。因此,如果您希望将变量导出到其他 shell 会话或子进程中使用,则需要使用 export 命令。 - barlop