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
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
Réponses:
C'est un synonyme de construit source
. Il exécutera les commandes d’un fichier du shell en cours , à 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
de nombreuses manières: la plus évidente 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 de 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.
source
ne se limite pas à bash, c’est dans des shells de style C ( csh
, tcsh
), mais aussi à zsh. .
fonctionne dans des coquilles à la Bourne, y compris celles énumérées . Etant donné que bash est un shell de style Bourne et que pratiquement aucun script bash de complexité non triviale n'est susceptible de s'exécuter dans un shell de style C, il est vrai qu'il .
devrait être considéré comme beaucoup plus portable. Mais le source
synonyme de bash .
existe en partie pour la portabilité.
.
est universellement portable et source
répandu, mais ne fonctionne pas en clair sh
.
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. nom de fichier [arguments]
source filename [arguments]
.
fonctionnera dans la plupart des obus (sh, ash, ksh, etc.),source
est spécifique à bash.