Je suis tombé sur cet exemple en essayant de monter un périphérique USB dans un conteneur openvz et je n’avais 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 la valeur intégrée source
. Il exécutera les commandes d'un fichier du shell en cours , telles qu'elles sont lues à 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 l’exécution du fichier avec, par exemple, /etc/vz/vz.conf
: le plus évident est que le fichier n’a pas besoin d’être exécutable; vous penserez alors à 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) effectuée par l'enfant.
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 cela t'aides.
Lorsqu'un script est exécuté à l'aide de "source", il s'exécute dans le shell existant. Toute variable créée ou modifiée par le script reste disponible une fois le script terminé.
Syntaxe. nom de fichier [arguments]
source filename [arguments]