Mi sono imbattuto in questo esempio quando ho provato a montare un dispositivo USB all'interno di un contenitore openvz e non avevo mai visto il costrutto nella seconda riga prima. Puoi spiegarci cosa significa?
#!/bin/bash
. /etc/vz/vz.conf
Mi sono imbattuto in questo esempio quando ho provato a montare un dispositivo USB all'interno di un contenitore openvz e non avevo mai visto il costrutto nella seconda riga prima. Puoi spiegarci cosa significa?
#!/bin/bash
. /etc/vz/vz.conf
Risposte:
È sinonimo di builtin source
. Sarà eseguire comandi da un file nella shell corrente , come leggere help source
o help .
.
Nel tuo caso, il file /etc/vz/vz.conf
verrà eseguito (molto probabilmente, contiene solo assegnazioni di variabili che verranno utilizzate in seguito nello script). Si differenzia dal solo eseguire il file con, ad esempio, /etc/vz/vz.conf
in molti modi: il più ovvio è che il file non deve essere eseguibile; allora penserai di eseguirlo bash /etc/vz/vz.conf
ma questo lo eseguirà solo in un processo figlio, e lo script padre non vedrà alcuna modifica (ad esempio, delle variabili) che il figlio fa.
Esempio:
$ # 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
$
Spero che sia di aiuto.
source
non è solo bash - è anche in shell in stile C ( csh
, tcsh
) - e anche zsh. .
funziona con gusci in stile Bourne compresi quelli elencati . Considerando che bash è una shell in stile Bourne e che quasi nessuno script bash di complessità non banale può essere eseguito in una shell in stile C, è vero che .
dovrebbe essere considerato molto più portatile. Ma il source
sinonimo di bash .
esiste in parte per la portabilità.
.
è universalmente portatile ed source
è molto diffuso, ma non funziona in modo chiaro sh
.
Quando uno script viene eseguito usando `source ', viene eseguito all'interno della shell esistente, tutte le variabili create o modificate dallo script rimarranno disponibili dopo il completamento dello script.
Sintassi. nomefile [argomenti]
source filename [arguments]
.
funzionerà nella maggior parte delle shell (sh, ash, ksh, ecc.),source
È specifico per bash.