Je suis tombé sur cet exemple en essayant de monter un périphérique USB dans un conteneur openvz et je n'ai jamais vu la construction dans la deuxième ligne auparavant. Pouvez-vous expliquer ce que cela signifie?
#!/bin/bash
. /etc/vz/vz.conf
Je suis tombé sur cet exemple en essayant de monter un périphérique USB dans un conteneur openvz et je n'ai jamais vu la construction dans la deuxième ligne auparavant. Pouvez-vous expliquer ce que cela signifie?
#!/bin/bash
. /etc/vz/vz.conf
C'est un synonyme de source
intégré. Il exécutera les commandes à partir d’un fichier dans le shell actuel , à partir de help source
ou help .
.
Dans votre cas, le fichier /etc/vz/vz.conf
sera exécuté (très probablement, il ne contient que des affectations de variables qui seront utilisées plus tard dans le script). Cela diffère de la simple exécution du fichier avec, par exemple, /etc/vz/vz.conf
à bien des égards: le plus évident est que le fichier n'a pas besoin d'être exécutable; alors vous penserez à l'exécuter avec bash /etc/vz/vz.conf
mais cela ne l'exécutera que dans un processus enfant, et le script parent ne verra aucune modification (par exemple, des variables) que l'enfant crée.
Exemple:
$ # 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
$
J'espère que ça aide.
Lorsqu'un script est exécuté avec 'source', il s'exécute dans le shell existant, toutes les variables créées ou modifiées par le script resteront disponibles une fois le script terminé.
Syntaxe . filename [arguments]
source filename [arguments]
Lire d'autres questions sur les étiquettes command-line bash openvz