Dalam skrip bash, apa maksud sebuah titik diikuti oleh spasi dan kemudian sebuah path?

83

Saya menemukan contoh ini ketika mencoba memasang perangkat usb di dalam wadah openvz dan saya belum pernah melihat konstruksinya di baris kedua sebelumnya. Bisakah Anda menjelaskan apa artinya?

#!/bin/bash
. /etc/vz/vz.conf
Denis Connolly
sumber

Jawaban:

98

Ini adalah sinonim dari builtin source. Ini akan menjalankan perintah dari file di shell saat ini , seperti dibaca dari help sourceatau help ..

Dalam kasus Anda, file /etc/vz/vz.confakan dieksekusi (kemungkinan besar, itu hanya berisi tugas variabel yang akan digunakan nanti dalam skrip). Ini berbeda dari hanya mengeksekusi file dengan, misalnya, /etc/vz/vz.confdalam banyak hal: yang paling jelas adalah bahwa file tidak perlu dieksekusi; maka Anda akan berpikir untuk menjalankannya bash /etc/vz/vz.conftetapi ini hanya akan mengeksekusinya dalam proses anak, dan skrip induk tidak akan melihat modifikasi apa pun (misalnya variabel) yang dibuat anak tersebut.

Contoh:

$ # 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
$

Semoga ini membantu.

gniourf_gniourf
sumber
14
Hanya sebuah catatan: .akan bekerja di sebagian besar shell (sh, ash, ksh, dll), sourcekhusus untuk bash.
Dmytro Sirenko
3
@EarlGray sourcebukan hanya bash - itu ada di kerang C-style ( csh, tcsh) - dan zsh juga. .bekerja dalam cangkang Bourne-style termasuk yang terdaftar . Mempertimbangkan bahwa bash adalah shell bergaya Bourne dan hampir tidak ada script bash dengan kompleksitas non-sepele yang cenderung berjalan dalam shell gaya-C, itu benar .harus dianggap jauh lebih portabel. Tapi sourcesinonim bash .ada sebagian untuk portabilitas.
Eliah Kagan
1
@ ElliKagan ya, Anda benar; lebih baik untuk mengatakan bahwa .itu portabel secara universal dan sourcetersebar luas, tetapi tidak berfungsi dengan jelas sh.
Dmytro Sirenko
5

Ketika sebuah skrip dijalankan menggunakan `source 'ia berjalan di dalam shell yang ada, variabel apa pun yang dibuat atau dimodifikasi oleh skrip akan tetap tersedia setelah skrip selesai.

Sintaks. namafile [argumen]

  source filename [arguments]
Sureshkumar
sumber