2010-12-20 21 views
20

Z kabuğunu bir süredir kullanıyorum ve merak etmeye başlıyorum. Kendi işlevlerimi yazarken yakaladığım bir şey "autoload". Adam sayfa autoload (bir istisna ile) "typeset -f eşdeğer" dir, (bir istisna ile) "functions -u eşdeğer" dir (1) zshbuiltins göre Z Shell "autoload" yerleşiği - ne işe yarar?

. Ancak, functions/Prompts/promptinit, otlogun kullanımına baktıktan sonra, ne yaptığını bir fikrim var düşünüyorum.

Otomatik yüklemeyi "içe aktarma" deyimi gibi düşünüyorum.

Ancak "autoload foo" neden "source bar" dan üstün? Bunu anlamıyorum. zsh documentation belirtildiği gibi

cevap

25

:

bir fonksiyon özdevinimli_yükle yerleşiği kullanılarak tanımsız olarak işaretlenebilir (veya functions -u veya typeset -fu). Böyle bir bir fonksiyonun gövdesi yoktur. işlevi ilk çalıştırıldığında, kabuğu, fpath değişkeninin öğelerini kullanarak tanımını arar. işlevleri kullanıldığında otomatik olarak yüklenecektir bir gövde ile belirtilen için [...]

autoload sağlar;)

source ancak değişken olarak daha sonra executed bir komut alır Geçerli oturumun ortamı - yani senaryonun çevreye yaptığı tüm değişiklikleri koruyacaksın, bu da betiği yürüten sadece örneğini uygular.

Ben çok fonksiyonlarda araçlardan sahip olduğunda bu özellik faydalı olduğunu düşünüyorum. daha hızlı başlangıcına (otomatik yükleme fonksiyonlarının tüm kodunun yüklenmesine gerek yoktur) izin verir ve kabuğunun bellek kapladığı alanı daha küçük tutar.

+1

Ah, daha hızlı başlangıç; bunu düşünmedi. Teşekkür ederim! – Mitro

İlgili konular