In uno script bash cosa significa un punto seguito da uno spazio e quindi da un percorso?

72

Mi sono imbattuto in questo esempio quando ho provato a montare un dispositivo USB all'interno di un contenitore openvz e non ho mai visto il costrutto nella seconda riga in precedenza. Puoi spiegare cosa significa?

#!/bin/bash
. /etc/vz/vz.conf
    
posta Denis Connolly 26.12.2012 - 15:56

2 risposte

87

È un sinonimo di source incorporato. eseguirà i comandi da un file nella shell corrente , come letto da help source o help . .

Nel tuo caso, verrà eseguito il file /etc/vz/vz.conf (molto probabilmente, contiene solo assegnazioni di variabili che verranno utilizzate successivamente nello script). Differisce dal solo eseguire il file con, ad es.,% Co_de% in molti modi: il più ovvio è che il file non ha bisogno di essere eseguibile; quindi penserai di eseguirlo con /etc/vz/vz.conf ma questo lo eseguirà solo in un processo figlio, e lo script genitore non vedrà alcuna modifica (ad es., delle variabili) che il bambino 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 questo aiuti.

    
risposta data gniourf_gniourf 26.12.2012 - 16:01
4
% Bl0ck_qu0te%

Syntax       . nomefile [argomenti]

  source filename [arguments]
    
risposta data Sureshkumar 24.04.2015 - 14:39

Leggi altre domande sui tag