Я столкнулся с этим примером, пытаясь установить USB-устройство внутри контейнера openvz, и я никогда раньше не видел конструкцию во второй строке. Можете ли вы объяснить, что это значит?
#!/bin/bash
. /etc/vz/vz.conf
Я столкнулся с этим примером, пытаясь установить USB-устройство внутри контейнера openvz, и я никогда раньше не видел конструкцию во второй строке. Можете ли вы объяснить, что это значит?
#!/bin/bash
. /etc/vz/vz.conf
Это синоним встроенного source
. Он будет выполнять команды из файла в текущей оболочке , считая из 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
$
Надеюсь, что это поможет.
Когда сценарий запускается с использованием «source», он запускается в пределах существующей оболочки, любые переменные, созданные или измененные скриптом, останутся доступными после завершения сценария.
Синтаксис , filename [аргументы]
source filename [arguments]