我在尝试在 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]