我在一些 shell 源代码中看到了类似“ ”的命令. test.sh
,但我不知道它有什么用。所以我试了一下。然后,该.sh
文件被执行了。
但是,我不明白“ .
”是如何工作的。你能解释一下吗?
答案1
该命令(在 中.
有一个同义词,但在大多数其他 Bourne shell 衍生产品中没有)将命名的文件作为当前 shell 的一部分读取。source
bash
考虑:
$ cat test.sh
export ENVVAR="Welcome"
echo $ENVVAR
$ echo $ENVVAR
$ test.sh
Welcome
$ echo $ENVVAR
$ . test.sh
Welcome
$ echo $ENVVAR
Welcome
$
注意:欺骗 1:我假设test.sh
是可执行的。欺骗 2:我假设test.sh
位于 上的目录中$PATH
。
这意味着在 中设置的环境变量test.sh
会影响当前 shell。相比之下,执行没有 的命令.
不会影响当前 shell 的环境。例如,在读取和相关文件.
时使用此机制。.profile
请注意,在 PATH 上.
查找简单名称(例如test.sh
其中没有斜杠),但文件只需可读;不必是可执行的。