在 Linux shell 中,我看到过以“./”开头的命令,例如
$ ./example
但我也看到了类似的命令,如 $ . example.sh
我的问题是它们是否具有相同的功能?
答案1
./example.sh
example.sh
将在当前目录中执行。
. example.sh
将要来源 example.sh
。
答案2
尽管它们看上去相似但两个命令并不相关。
./example
将在当前文件夹中执行二进制或可执行 shell 脚本。如果是 shell 脚本,它将在子 shell 中执行。
. example
等同于
source example
这将“获取”文件,即在当前的shell。这意味着如果该文件中有变量或函数声明,它们将在命令之后在当前 shell 中可用source
。变量操作或其他任何事情也将在当前 shell 中发生。这就像您在终端中手动逐行输入文件内容一样。