Em um script bash, o que significa um ponto seguido por um espaço e, em seguida, um caminho?

67

Eu me deparei com este exemplo ao tentar montar um dispositivo usb dentro de um contêiner openvz e nunca vi a construção na segunda linha antes. Você pode explicar o que isso significa?

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

2 respostas

82

É um sinônimo do source incorporado. Ele irá executar comandos de um arquivo no shell atual , como lido em help source ou help . .

No seu caso, o arquivo /etc/vz/vz.conf será executado (muito provavelmente, ele contém apenas atribuições de variáveis que serão usadas posteriormente no script). É diferente de executar o arquivo com, por exemplo, /etc/vz/vz.conf de várias maneiras: o mais óbvio é que o arquivo não precisa ser executável; então você vai pensar em executá-lo com bash /etc/vz/vz.conf , mas isso só irá executá-lo em um processo filho, e o script pai não verá nenhuma modificação (por exemplo, de variáveis) que a criança faça.

Exemplo:

$ # 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 isso ajude.

    
por gniourf_gniourf 26.12.2012 / 16:01
3
  

Quando um script é executado usando 'source', ele é executado dentro do shell existente, quaisquer variáveis criadas ou modificadas pelo script permanecerão disponíveis após a conclusão do script.

Sintaxe       . nome do arquivo [argumentos]

  source filename [arguments]
    
por Sureshkumar 24.04.2015 / 14:39