“Kaynak” ve “.” Arasındaki fark nedir?


147

Bash ile source /some/scriptveya . /some/scriptiçinde bir script (örn. / Some / script) çalıştırmak arasındaki fark nedir ?

Yanıtlar:


134

sourceve Bash. ile eşanlamlıdır .

Komutların sadece eş anlamlı olduğunu ve başka bir şey olmadığını doğrulamak isteyen herkes için, kaynak koduna bakın , sürüm 4.3 için söyleyin ve dosyayı inceleyin builtins/source.def. Sen yerleşik komutların hem okumak, olacak sourceve .çok aynı işlevi kullanın: source_builtin.


bu nerede tanımlanır? Demek istediğim kaynak için bir takma ad mı yoksa bu başka bir şey mi?
saat

aynı şey

12
@binW: .Eski burur kabuğundan miras alınan geleneksel kaynak komutudur. sourcesadece ., muhtemelen daha okunaklı olduğu için tam olarak aynı olan bir bash yerleşimidir ( .tek başına küçük bir fontla anlaşılması zor olabilir). Aynı bilgiyi görecek help sourceve göstereceksiniz help ..
geirha

3
@binW: Eğer bakarsanız man bashve onu ararsanız , bunun eş anlamlı sourceolduğunu göreceksiniz . source filename [arguments]. filename [arguments]
Matthew Rankin

46

.sourcebash ile eşanlamlıdır , ancak POSIX sh ile eşdeğer değildir, bu nedenle .komut dosyanızın / bin / sh tarafından çalıştırılması durumunda kullanmanız gerekir . Bash'ın / bin / sh olarak çağrıldığında POSIX sh gibi çalıştığını iddia ettiğini, ancak sourceşikayet etmeden kabul ettiğini unutmayın .

Bu davranış beni ısırdı, örneğin bash ile çalıştırıldığında bash / bin / sh olarak test edilen komut dosyaları başarısız oldu.


16
POSIX kabuğu kısıtlamaz. POSIX sadece diyor ki; kabuk en azından bunu ve bu özelliği destekleyecektir. Dolayısıyla bir POSIX kabuğu, POSIX tarafından açıklananlar uygulandığı sürece ek özellikler uygulamakta serbesttir. Shebang #!/bin/sh, kabuğun asla POSIX özelliklerinden başka bir şeyi desteklemediğini varsaymanız gerektiğini söylediğinde . pubs.opengroup.org/onlinepubs/9699919799/utilities/…
geirha


3
Bu cevap bana yardımcı oldu, çünkü sh genellikle cron'da kullanılıyor.
dfrankow
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.