pax*_*blo 13
获取脚本是在当前shell的上下文中运行它,而不是在新shell中运行它.
例如:
. myscript.sh
Run Code Online (Sandbox Code Playgroud)
要么:
source myscript.sh
Run Code Online (Sandbox Code Playgroud)
(取决于你正在运行的shell).
如果您在自己的shell中运行脚本,则它对环境所做的任何更改都在该 shell 中,而不是您从中调用的那个.通过采购它,您可以影响当前shell的环境.
例如,检查以下记录:
pax> cat script.sh
export xyzzy=plugh
echo $xyzzy
pax> export xyzzy=twisty
pax> echo $xyzzy ; script.sh ; echo $xyzzy
twisty
plugh
twisty
pax> echo $xyzzy ; . script.sh ; echo $xyzzy
twisty
plugh
plugh
Run Code Online (Sandbox Code Playgroud)
当您运行脚本(不同的shell)时,它会设置xyzzy为plugh但是当shell退出到原始shell时会丢失.您会发现原始值已经"恢复"(在引号中,因为原始值从未实际更改,只有它的副本).
当您采购它,它就像你键入当前shell中的命令等变量的影响是持久的.