Bir bash betiğinde bir noktadan sonra boşluk ve sonra yol ne demektir?


83

Bir usb aygıtını bir openvz kabının içine monte etmeye çalışırken bu örneğe rastladım ve yapıyı daha önce ikinci satırda hiç görmedim. Ne anlama geldiğini açıklayabilir misin?

#!/bin/bash
. /etc/vz/vz.conf

Yanıtlar:


98

Yerleşik ile eşanlamlıdır source. Bu olacak şimdiki kabuğunda bir dosyadan komutları çalıştırmak okunan, help sourceya help ..

Senin durumunda, dosya /etc/vz/vz.confçalıştırılacak (büyük olasılıkla, sadece komut dosyasında daha sonra kullanılacak değişken atamalarını içeriyor). Dosyanın sadece /etc/vz/vz.confbirçok yönden çalıştırılmasından farklıdır : En belirgin olanı dosyanın çalıştırılabilir olması gerekmemesidir; o zaman onu çalıştırmayı düşüneceksiniz bash /etc/vz/vz.confama bu sadece bir çocuk işleminde yürütecek ve ebeveyn senaryo çocuğun yaptığı herhangi bir değişiklik görmeyecektir (örneğin değişkenlerin).

Örnek:

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

Bu yardımcı olur umarım.


14
Sadece bir not: .Çoğu kabukta çalışacaktır (sh, kül, ksh, vb.), sourceBash için özeldir.
Dmytro Sirenko

3
@EarlGray sadece bash sourcedeğil - C tarzı mermilerde ( , ) - ve de zsh. Bourne tarzı kabukları listelenen olanlar da dahil olmak üzere çalışır . Bash'in Bourne tarzı bir kabuk olduğu ve önemsiz olmayan karmaşıklığın bash betiğinin C-tarzı bir kabukta çalışması pek muhtemel olmadığı düşünülürse , bunun daha taşınabilir olduğu düşünülmelidir. Fakat bash'ın eşanlamlılığı kısmen taşınabilirlik için var. cshtcsh..source.
Eliah Kagan

1
@EliahKagan evet, haklısın; Bunun .evrensel olarak portatif ve sourceyaygın olduğunu, ancak düz bir şekilde çalışmadığını söylemek daha iyidir sh.
Dmytro Sirenko 9:14,

5

Bir script `source 'kullanılarak çalıştırıldığında, mevcut kabuk içinde çalışır, script tarafından yaratılan veya değiştirilen değişkenler, script tamamlandıktan sonra kullanılabilir durumda kalır.

Sözdizimi dosya adı [argümanlar]

  source filename [arguments]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.