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

69

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
    
posée Denis Connolly 26.12.2012 - 15:56
la source

2 réponses

84

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.

    
réponse donnée gniourf_gniourf 26.12.2012 - 16:01
la source
4
  

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]
    
réponse donnée Sureshkumar 24.04.2015 - 14:39
la source

Lire d'autres questions sur les étiquettes