En un script bash, ¿qué significa un punto seguido de un espacio y luego un camino?

71

Encontré este ejemplo cuando intento montar un dispositivo usb dentro de un contenedor openvz y nunca antes había visto el constructo en la segunda línea. ¿Puedes explicar lo que significa?

#!/bin/bash
. /etc/vz/vz.conf
    
pregunta Denis Connolly 26.12.2012 - 15:56

2 respuestas

86

Es un sinónimo del% source incorporado. Ejecutará comandos desde un archivo en el shell actual , como leídos desde help source o help . .

En su caso, se ejecutará el archivo /etc/vz/vz.conf (muy probablemente, solo contiene asignaciones de variables que se usarán más adelante en el script). Difiere de simplemente ejecutar el archivo con, por ejemplo, /etc/vz/vz.conf de muchas maneras: la más obvia es que el archivo no necesita ser ejecutable; luego pensará en ejecutarlo con bash /etc/vz/vz.conf pero esto solo lo ejecutará en un proceso hijo, y el script principal no verá ninguna modificación (por ejemplo, de variables) que haga el niño.

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.

    
respondido por el gniourf_gniourf 26.12.2012 - 16:01
4
  

Cuando se ejecuta un script usando 'source' se ejecuta dentro del shell existente, cualquier variable creada o modificada por el script permanecerá disponible después de que el script se complete.

Sintaxis       . nombre de archivo [argumentos]

  source filename [arguments]
    
respondido por el Sureshkumar 24.04.2015 - 14:39

Lea otras preguntas en las etiquetas