在 bash 脚本中,一个点后跟一个空格再跟一个路径是什么意思?

在 bash 脚本中,一个点后跟一个空格再跟一个路径是什么意思?

我在尝试在 openvz 容器内挂载 USB 设备时遇到了这个示例,我以前从未见过第二行中的构造。你能解释一下它代表什么吗?

#!/bin/bash
. /etc/vz/vz.conf

答案1

它是内置的同义词source。它将在当前 shell 中执行文件中的命令,如从help source或读出help .

在您的情况下,文件/etc/vz/vz.conf将被执行(很可能,它仅包含稍后将在脚本中使用的变量赋值)。它与仅使用 执行文件有/etc/vz/vz.conf诸多不同:最明显的是该文件不需要可执行;然后您会考虑使用 运行它,bash /etc/vz/vz.conf但这只会在子进程中执行它,并且父脚本将看不到子进程所做的任何修改(例如,对变量的修改)。

例子:

$ # Create a file testfile that contains a variable assignment:
$ echo "a=hello" > testfile
$ # Check that the variable expands to nothing:
$ echo "$a"

$ # Good. Now execute the file testfile with bash
$ bash testfile
$ # Check that the variable a still expands to nothing:
$ echo "$a"

$ # Now _source_ the file testfile:
$ . testfile
$ # Now check the value of the variable a:
$ echo "$a"
hello
$

希望这可以帮助。

答案2

当使用“source”运行脚本时,它会在现有的 shell 中运行,脚本创建或修改的任何变量在脚本完成后仍可用。

语法 . 文件名 [参数]

  source filename [arguments]

相关内容