Encontré este ejemplo al intentar montar un dispositivo usb dentro de un contenedor openvz y nunca antes había visto la construcción en la segunda línea. ¿Puedes explicar lo que significa?
#!/bin/bash
. /etc/vz/vz.conf
Encontré este ejemplo al intentar montar un dispositivo usb dentro de un contenedor openvz y nunca antes había visto la construcción en la segunda línea. ¿Puedes explicar lo que significa?
#!/bin/bash
. /etc/vz/vz.conf
Respuestas:
Es un sinónimo de la construcción source
. Será ejecutar comandos desde un archivo en el shell actual , como leer help source
o help .
.
En su caso, el archivo /etc/vz/vz.conf
se ejecutará (muy probablemente, solo contiene asignaciones variables que se utilizarán más adelante en el script). Difiere de simplemente ejecutar el archivo, por ejemplo, /etc/vz/vz.conf
de muchas maneras: lo más obvio es que el archivo no necesita ser ejecutable; entonces pensará en ejecutarlo, bash /etc/vz/vz.conf
pero esto solo lo ejecutará en un proceso secundario, y el script principal no verá ninguna modificación (p. ej., de variables) que realice el elemento secundario.
Ejemplo:
$ # 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
$
Espero que esto ayude.
source
no es solo bash, está en shells de estilo C ( csh
, tcsh
) y zsh también. .
funciona en conchas de estilo Bourne, incluidas las enumeradas . Teniendo en cuenta que bash es un shell de estilo Bourne y que es probable que casi ningún script de bash de complejidad no trivial se ejecute en un shell de estilo C, es cierto que .
debería considerarse mucho más portátil. Pero el source
sinónimo de bash .
existe en parte para la portabilidad.
.
es universalmente portátil y source
está muy extendido, pero no funciona de manera simple sh
.
Cuando un script se ejecuta usando 'source' se ejecuta dentro del shell existente, cualquier variable creada o modificada por el script permanecerá disponible una vez que se complete el script.
Sintaxis nombre de archivo [argumentos]
source filename [arguments]
.
funcionará en la mayoría de los shells (sh, ash, ksh, etc.),source
es específico para bash.