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 sourceo help ..
Nel tuo caso, il file /etc/vz/vz.confverrà 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.confin molti modi: il più ovvio è che il file non deve essere eseguibile; allora penserai di eseguirlo bash /etc/vz/vz.confma 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.
sourcenon è 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 sourcesinonimo 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.