Cha*_*ghe 83 unix shell command environment-variables
我对Linux有点新,我碰巧盲目地运行一些命令,以便完成任务.我认为提出这些类型的问题不会浪费,因为更多的新人会对这些问题有一定的了解.
我最近开始与詹金斯合作,然后我不得不使用这个导出命令来运行jenkins war档案.所以我需要知道'export'命令的作用,以及为什么我们需要在运行jenkins时运行此命令(在jenkins home设置之后).
谢谢!
Yan*_*min 98
exportin sh和相关的shell(例如bash)标记要导出到子进程的环境变量,以便子进程继承它们.
shell应将export属性赋予与指定名称对应的变量,这将使它们处于随后执行的命令的环境中.如果变量的名称后跟= word,则该变量的值应设置为word.
bar*_*lop 25
我想你是来自windows背景.所以我会对比它们(我也是Linux的新手).我找到了用户对我的评论的回复,这对于解决问题非常有用.
在Windows中,变量可以是永久变量.术语环境变量包括使用SET命令在cmd shell中设置的变量,以及在Windows GUI中设置变量的时间,因此在注册表中设置,并在新的cmd窗口中变为可查看.例如,windows中set命令的文档 https://technet.microsoft.com/en-us/library/bb490998.aspx "显示,设置或删除环境变量.使用不带参数,set显示当前环境设置." 在Linux中,set不显示环境变量,它显示它不调用/引用的shell变量作为环境变量.此外,Linux不使用set来设置变量(除了位置参数和shell选项,我在最后解释为注释),只显示它们,甚至只显示shell变量.Windows使用set进行设置和显示,例如set a = 5,linux则不然.
在Linux中,我猜你可以创建一个在启动时设置变量的脚本,例如/etc/profile或者/etc/.bashrc否则,它们不是永久性的.它们存储在RAM中.
Linux中的shell变量和环境变量之间存在区别.在Linux中,shell变量仅存在于当前shell中,而环境变量位于该shell和所有子shell中.
您可以使用该set命令查看shell变量(但请注意,与windows不同,变量未在linux中使用set命令设置).
set -o posix; set (先做一次-o posix设置,有助于不显示太多不必要的东西).所以set显示shell变量.
您可以使用该env命令查看环境变量
shell变量用例如just设置 a = 5
使用export设置环境变量,export也设置shell变量
在这里,您可以看到使用zzz = 5设置的shell变量zzz,并看到它在运行时显示set但不显示为环境变量.
在这里,我们看到yyy设置为export,因此它是一个环境变量.并且看到它在shell变量和环境变量下显示
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
Run Code Online (Sandbox Code Playgroud)
其他有用的线程
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
注意 - 有一点详细说明并且对我所写的内容有所纠正,就是在linux bash中,'set'可以用来设置"位置参数"和"shell选项/属性",技术上两者都是这些是变量,尽管手册页可能没有这样描述.但是,如上所述,set仍然不会设置shell变量或环境变量).如果你这样做, set asdf它会将1美元设置为asdf,如果你这样做,echo $1你会看到asdf.如果这样做set a=5,则不会设置变量a,等于5.它将位置参数$ 1设置为等于"a = 5"的字符串.因此,如果你曾经在linux中看到设置a = 5,那么除非有人真的想要字母a = 5,否则它可能是一个错误.linux的集合可以设置的另一件事是shell选项/属性.如果你设置-o,你会看到它们的列表.并且你可以做,例如set -o verbose,关闭,以打开详细(顺便说一下,默认情况下是关闭,但这对此没有任何影响).或者你可以做到set +o verbose关闭详细.Windows的set命令没有这种用法.
简而言之,当您打开新的Shell会话时,将设置环境变量。在任何时候,如果您更改任何变量值,则Shell都无法选择该更改。这意味着您所做的更改将在新的Shell会话中生效。export另一方面,该命令提供了有关您对导出变量所做的更改来更新当前Shell会话的功能。您不必等到新的shell会话就可以使用更改的变量的值。
| 归档时间: |
|
| 查看次数: |
98741 次 |
| 最近记录: |