web-dev-qa-db-fra.com

Dans un script bash, que signifie un point suivi d'un espace puis d'un chemin?

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
83
Denis Connolly

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.

98
gniourf_gniourf

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]
5
Sureshkumar