Natknąłem się na ten przykład, gdy próbowałem zamontować urządzenie USB w kontenerze openvz i nigdy wcześniej nie widziałem konstrukcji w drugiej linii. Czy możesz wyjaśnić, co to znaczy?
#!/bin/bash
. /etc/vz/vz.conf
Natknąłem się na ten przykład, gdy próbowałem zamontować urządzenie USB w kontenerze openvz i nigdy wcześniej nie widziałem konstrukcji w drugiej linii. Czy możesz wyjaśnić, co to znaczy?
#!/bin/bash
. /etc/vz/vz.conf
Odpowiedzi:
To synonim wbudowanego source
. Będzie wykonywać polecenia z pliku w bieżącej powłoce , zgodnie z odczytem z help source
lub help .
.
W twoim przypadku plik /etc/vz/vz.conf
zostanie wykonany (najprawdopodobniej zawiera tylko przypisania zmiennych, które zostaną wykorzystane później w skrypcie). Różni się od zwykłego wykonywania pliku np. Na /etc/vz/vz.conf
wiele sposobów: najbardziej oczywistym jest to, że plik nie musi być wykonywalny; wtedy pomyślisz o uruchomieniu go, bash /etc/vz/vz.conf
ale spowoduje to wykonanie go tylko w procesie potomnym, a skrypt nadrzędny nie zobaczy żadnych modyfikacji (np. zmiennych) dokonanych przez dziecko.
Przykład:
$ # 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
$
Mam nadzieję że to pomoże.
source
to nie tylko bash - to także powłoki w stylu C ( csh
, tcsh
) - i zsh. .
działa w muszlach typu Bourne'a, w tym tych wymienionych . Biorąc pod uwagę, że bash jest powłoką w stylu Bourne'a i prawie żaden skrypt bash o nieskrywalnej złożoności prawdopodobnie będzie działał w powłoce w stylu C, to prawda .
powinna być uważana za znacznie bardziej przenośną. Ale source
synonim bash .
istnieje częściowo dla przenośności.
.
jest uniwersalnie przenośny i source
jest szeroko rozpowszechniony, ale nie działa w prosty sposób sh
.
Kiedy skrypt jest uruchamiany przy użyciu `source ', działa w ramach istniejącej powłoki, wszelkie zmienne utworzone lub zmodyfikowane przez skrypt pozostaną dostępne po zakończeniu skryptu.
Składnia nazwa pliku [argumenty]
source filename [arguments]
.
działa w większości powłok (sh, ash, ksh itp.),source
Jest specyficzny dla bash.