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
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
Respostas:
É um sinônimo do embutido source
. Ele executará comandos de um arquivo no shell atual , conforme 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). Difere de apenas 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ê pensará em executá-lo, bash /etc/vz/vz.conf
mas isso só será executado em um processo filho, e o script pai não verá nenhuma modificação (por exemplo, de variáveis) que o filho fizer.
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 isto ajude.
source
não é apenas o bash - está em conchas de estilo C ( csh
, tcsh
) - e zsh também. .
funciona em conchas no estilo Bourne, incluindo as listadas . Considerando que o bash é um shell no estilo Bourne e dificilmente qualquer script do bash de complexidade não trivial é executado em um shell no estilo C, é verdade que .
deve ser considerado muito mais portátil. Mas o source
sinônimo de bash .
existe em parte para portabilidade.
.
é universalmente portátil e source
amplamente difundido, mas não funciona de maneira clara sh
.
Quando um script é executado usando o `source ', ele é executado no shell existente, quaisquer variáveis criadas ou modificadas pelo script permanecerão disponíveis após a conclusão do script.
Sintaxe. filename [argumentos]
source filename [arguments]
.
funcionará na maioria dos shells (sh, ash, ksh, etc),source
é específico para o bash.