17 puan yazan GN⁺ 2026-01-11 | 10 yorum | WhatsApp'ta paylaş
  • Oh My Zsh(OMZ) hâlâ yaygın biçimde öneriliyor, ancak kabuğun açılış süresini yavaşlatan gereksiz script yüküne neden oluyor
  • OMZ shell script olarak yazıldığı için her yeni terminal sekmesi açıldığında tüm scriptlerin yeniden yorumlanması gerekiyor ve varsayılan yapılandırmada bile yaklaşık 0,38 saniyelik gecikme oluşuyor
  • Basit bir minimal Zsh yapılandırması ile Starship promptu ve fzf tabanlı geçmiş araması kullanıldığında açılış süresi 0,07 saniyeye düşürülebiliyor
  • Starship, promptu tek bir binary ile oluşturarak OMZ'nin mevcut git·sanal ortam·dil bazlı eklentilerinin yerini alıyor
  • Karmaşık eklentiler yerine yalnızca gereken işlevleri doğrudan ekleyen hafifletilmiş shell yapılandırması daha verimli

Oh My Zsh'nin performans sorunu

  • Oh My Zsh(OMZ) hâlâ yaygın kullanılıyor, ancak gereksiz yük (bloat) nedeniyle shell açılış hızını düşürüyor
    • OMZ shell scriptlerden oluştuğu için her yeni terminal sekmesi açıldığında tüm scriptlerin yorumlanması gerekiyor
    • Varsayılan eklentiler (git, zsh-autosuggestions, zsh-autocomplete) içeren yapılandırmada /usr/bin/time -f "%e seconds" zsh -i -c exit çalıştırıldığında sonuç 0,38 saniye
  • Git deposu klasöründe yeni sekme açıldığında hissedilen gecikme yaklaşık 1 saniye olabiliyor
  • OMZ düzenli aralıklarla güncelleme kontrolü yapıyor ve bu süreç birkaç saniyelik ek gecikmeye yol açabiliyor
  • Shell yapılandırmasının sık güncellenmesi gereksiz; bunun yerine yalnızca gerekli işlevleri elle ekleyen sade bir yapı öneriliyor

Minimal Zsh yapılandırması

  • Önerilen minimal Zsh yapılandırması şöyle
    export HISTSIZE=1000000000
    export SAVEHIST=$HISTSIZE
    setopt EXTENDED_HISTORY
    setopt autocd
    autoload -U compinit; compinit
    
    • HISTSIZE ve SAVEHIST, komut geçmişinin boyutunu belirler
    • EXTENDED_HISTORY, geçmişe zaman damgası ekler
    • autocd, cd komutu olmadan dizin değiştirmenizi sağlar
    • compinit, otomatik tamamlama sistemini başlatır
  • Yalnızca bu yapılandırma bile tamamlama özelliği içeren temel bir shell ortamı sağlar

Prompt özelleştirme

  • Prompt için Starship kullanılıyor
    • Starship, tek bir binary olarak gelen hızlı ve minimal bir prompt
    • OMZ'deki mevcut eklenti ve temaların yerini alarak git, sanal ortam ve dil durumlarını gösteriyor
  • Starship yapılandırma örneğinde AWS, GCP, Azure, NodeJS gibi bulutla ilgili göstergeler kapatılarak görsel gürültü azaltılıyor
  • Python ve Rust projelerinde ilgili dil promptta vurgulanıyor, ayrıca komut çalıştırma süresi de gösteriliyor
  • Etkinleştirmek için .zshrc dosyasına şu satırı eklemek yeterli
    eval "$(starship init zsh)"
    

Geçmiş araması

  • Yaygın kullanılan zsh-autosuggestions eklentisi yazarken öneri gösterdiği için dikkati dağıtabiliyor
  • Bunun yerine fzf, Ctrl+R tuşuna bağlanarak geçmişte etkileşimli fuzzy search yapılmasını sağlıyor
    source <(fzf --zsh)
    

Performans iyileştirme sonucu

  • Yukarıdaki yapılandırma uygulandıktan sonra shell açılış süresi şöyle ölçülüyor
    ❯ /usr/bin/time -f "%e seconds" zsh -i -c exit
    0.07 seconds
    
  • OMZ'ye kıyasla yaklaşık 5 kattan fazla daha hızlı açılış elde ediliyor

Ek ipuçları

  • Vim kullanıcıları, Zsh içinde Vim modunu etkinleştirerek komut düzenleme hızını artırabilir
    set -o vi
    bindkey -v '^?' backward-delete-char
    
    • zle varsayılan olarak Emacs tuş atamalarını kullandığı için bu ayar Vim tarzı girişi mümkün kılar

Sonuç ve kullanım örnekleri

  • OMZ'den geçiş yaptıktan sonra yalnızca birkaç gün içinde yeni iş akışına uyum sağlanmış
  • Gereken eklentiler elle yüklenebiliyor
  • Çok sayıda sekme açılmasının nedeni tmux ile terminal tabanlı düzenleyicinin (helix) birlikte kullanılması
    • tmux içinde lazygit ve yazi dosya yöneticisi açılır pencere biçiminde çalıştırılıyor
    • Kod çalıştırma ve test çıktıları için geçici bölme pencereleri kullanılıyor; bunların her biri ayrı bir shell oturumu olarak çalışıyor

Yorum özeti

  • Bazı kullanıcılar OMZ'nin açılış süresinin 0,03 saniye civarında olup yeterince hızlı olduğunu savunuyor
  • Yazar, zsh-autocomplete eklentisinin hızı düşürdüğünü belirtiyor
  • zsh-bench sonuçlarında OMZ için ilk prompt gecikmesi 603 ms, sade Zsh yapılandırması içinse 103 ms ölçülmüş
  • Starship, OMZ'nin promptla ilgili işlevlerini tek bir araçla değiştiriyor
  • Diğer kullanıcılar Zimfw, Atuin ve elle yazılmış bash promptları gibi alternatiflerden söz ediyor

10 yorum

 
roxie 2026-02-27

Optimizasyon yapmazsanız gerçekten yavaş oluyor. Ama alıştığım çok fazla özelliği var, o yüzden bırakıp gitmek biraz,, kolay değil.

 
tesha001 2026-01-12

Henüz o kadar fark edilir derecede rahatsız edici gelmiyordu.

 
princox 2026-01-12

Bu bir web sunucusu da değil; rahatsızlık verecek kadar değilse çok da dert etmiyorum..

 
zxcv123 2026-01-11

Geliştiriciler işte, gereksiz birkaç ms için ortalığı ayağa kaldırıyorlar lol

 
kayws426 2026-01-12

Birkaç gereksiz ms yüzünden teknoloji ilerlemiyor muydu zaten?

 
t7vonn 2026-01-11

Terminali sık kullanıyorsanız, omz'nin eklediği gecikme oldukça can sıkıcıdır.

 
edunga1 2026-01-12

Ben de başlangıçta omz ile başladım; bunun katlanılması gereken bir rahatsızlık olduğunu sanıyordum T_T
Son zamanlarda eklentileri tek tek kaldırdım ve güncelleme politikasını da değiştirdim ama.. bunu görünce onsuz da olurmuş diye düşündüm.
Benim için, tmuxinator ile ayarları yüklerken omz update y/n çıkması pek hoş olmuyor.

 
devfluotin 2026-01-12

Birkaç ay önce prezto’ya geçmiştim; o zaman da omz bu kadar yavaş mıydı diye düşünmüştüm.
Sadece birkaç temel eklenti bile hissedilir şekilde yavaşlatıyor...

 
wedding 2026-01-14

Ben starship'e geçtim.

 
GN⁺ 2026-01-11
Hacker News yorumları
  • Benim oh-my-zsh kullanmak için tek bir nedenim var
    yeni bir makinede, uzak bir hostta ya da container içinde nerede olursam olayım hemen kullanabileceğim anında üretken bir shell ortamı elde etmek
    ayarlarla saatler harcamak yerine o zamanı daha önemli işlere ayırmak istiyorum

    • Starship denemeni tavsiye ederim
      “kur ve kullan” deneyimi aynı kalıyor ama 200 ms’den fazla prompt gecikmesi olmuyor
      tek satırlık curl ile kuruluyor ve yapılandırması da basit
      denersen pişman olmayacağını düşünüyorum
    • Eğer makine özel ayarlara izin veriyorsa, kendi dotfiles dosyalarını kopyalayıp kullanmanın daha iyi olduğunu düşünüyorum
      Yapılandırma dosyalarını bir kez oluşturup git ile yönetirsen, diğer makinelerde de aynısını kullanabilirsin
      Ben de yeni bir makine kurarken sadece dotfiles’ımı getiriyorum ve alışık olduğum ortam hemen hazır oluyor
    • Aslında dotfiles zaten bunun için icat edilmedi mi?
      Şaka bir yana, varsayılan shell’i kurmaktan ziyade .bashrc kopyalamak çok daha kolay
    • Ben de Oh My Zsh kullandım ama çok yavaş olduğu için bıraktım
      Her sekme açışımda beklemek sinir bozucuydu
      Sonunda Homebrew ile ihtiyacım olan birkaç eklentiyi kendim kurdum, bir saat bile sürmedi
      Şimdi hızlı ve hafif bir shell ile çok daha üretkenim ve keyfim yerinde
    • Zim de iyi bir seçenek. Oh My Zsh’den daha hızlı ve yapılandırması daha kolay
      Shell açılış hızı çok yüksek ve kurulumu da zahmetsiz
  • Bu yüzden ben fish’e geçtim
    Tam olarak zevkime göre değil ama varsayılan ayarları yeterince iyi, ben de alıştım gitti
    Artık shell yapılandırmasıyla neredeyse hiç uğraşmıyorum

    • Bu yaklaşımın avantajı, hangi host olursa olsun fish kurunca ek ayar gerektirmeden aynı ortamı kullanabilmek
    • fish, varsayılan haliyle bile yüksek performans ve harika bir UX sunuyor
      Yine de yeni başlayanlara tuş kısayollarını mutlaka okumalarını tavsiye ederim
      Ekipte bir arkadaşım tab tamamlama ya da shift+arrow gibi özellikleri bilmediği için yavaşlamıştı
    • Varsayılan yapılandırmada neyin eksik olduğunu merak ediyorum
      Ben bazen sadece vim bağları ya da fuzzy find eklentisi ekliyorum
      Sadece temel fish bile fazlasıyla iyi
  • Zsh’te Vim modu açmayı öneren görüşe katılmıyorum
    Varsayılan readline tek bir komut için zaten yeterince iyi
    Uzun komutları da C-x C-e ile düzenleyebilirsin
    Birlikte pair programming yaparken Vim moduna geçişler yüzünden aksine daha yavaş görünüyor

    • C-x C-e kısayolunun gerçekten çok faydalı olduğunu yeni öğrendim
    • Ben de Vim modunu açtıktan sonra readline bağlarını yeniden ekledim
      Çoğu zaman insert modundayım, sadece büyük bir düzenleme gerektiğinde C-x C-e kullanıyorum
    • Mod değiştirmek tek tuşluk iş, o yüzden yavaş olması için bir sebep yok
      vi tuş bağlarına alışkınsan w, b, dw gibi komutlar kas hafızasıyla daha hızlı oluyor
      Editör açmak akışı bölüyor ve çıktıyı da kapatıyor, o yüzden tercih etmiyorum
      Keşke shell’de de Vim’deki karakterler arası silme (di") gibi özellikler olsaydı
  • Ben de oh-my-zsh’i sadece temel kurulum için kullanıyorum
    Sadece git eklentisini kullanıyorum ve özel fonksiyonları otomatik yüklüyorum
    hyperfine ile ölçtüğümde login shell 54 ms, normal shell ise yaklaşık 6 ms çıktı
    380 ms gecikmenin başka bir nedeni olabileceğini düşünüyorum

    • zsh performansıyla ilgileniyorsan zsh4humans öneririm
      anında başlatma sunuyor ve bakım modunda olduğu için zaman kaybını da azaltıyor
    • zsh -l bir login shell’dir, bu yüzden zshrc yüklemez
      Testi zsh -ic exit ile yapmak gerekir
      Ayrıntılar için zsh-bench kılavuzuna bakabilirsin
    • Daha doğru ölçüm için .zshrc içine zprof eklemek daha iyi olur
      zmodload zsh/zprof
      ...
      zprof
      
    • Benchmark’ı bir git deposunun içindeyken yapmayı da tavsiye ederim
    • extract, z, fzf gibi eklentileri de denemeni öneririm
  • Ben fish + starship kombinasyonuna geçtim
    fish, varsayılan olarak otomatik tamamlama ve sözdizimi renklendirme sunduğu için oh-my-zsh’nin temel işlevlerini karşılıyor
    ilgili yazıya bakabilirsin

    • Yine de fish, POSIX uyumlu olmadığı için bazı rahatsızlıklar yaratıyor
      Bu yüzden ben zsh+starship+basit bir init script kullanmaya devam ediyorum
      fish’in tamamen “sadece çalışmasını” isterdim ama hâlâ eksikleri var
    • Ben de onlarca yıl zsh kullandım ama geçen yıldan beri fish’e geçtim ve kullanmaya devam ediyorum
      HEREDOC olmaması ve background block desteklememesi can sıkıcı ama,
      bugünlerde karmaşık script’ler yerine daha çok tek bir binary olarak derlenen dilleri tercih ediyorum
      Olgunlaştığında nushell’e geçmeyi düşünüyorum
    • Aslında fish, varsayılan haliyle bile fazlasıyla iyi, bu yüzden neredeyse hiç özelleştirme gerekmiyor
  • Ben birkaç yıl önce Zim’e geçtim
    İhtiyacım olan her şey var, hızlı ve kurulumu da kolay
    https://zimfw.sh/

    • Zimfw çok hızlı ve esnek bir kurulum sistemine sahip
      Çeşitli kaynakları ve formatları destekliyor, zsh kod entegrasyonu da çok iyi
      Çoğu eklenti sisteminden hız ve uyumluluk açısından çok daha iyi
      Gerçekten harika bir framework
  • Üniversite zamanlarımda, yaklaşık 15 yıl önce oh-my-zsh kurmuştum
    O zamandan beri o kadar memnunum ki başka bir shell ya da yapılandırma deneme ihtiyacı hiç hissetmedim
    Yeni bir bilgisayar kurarken ilk işim onu yüklemek oluyor

  • Uzun zamandır oh-my-zsh kullanıyordum ama bu kez Claude yardımıyla 5 dakikada kaldırdım
    İhtiyacım olan özellikleri sadece raw zsh ile değiştirdim
    Prompt olarak starship kullandığım için ek yapılandırma neredeyse hiç gerekmedi
    Şimdilik her şey sorunsuz çalışıyor gibi görünüyor

  • Bazıları oh-my-zsh’nin 0,5 saniyelik gecikmesini sorun etmenin abartı olduğunu düşünüyor
    Sadece bash ve KDE konsole kullanmanın yeterli olduğunu söylüyorlar
    Shell’in sadece iş yapmak için basit bir sarmalayıcı olduğunu, bu tür mikro optimizasyonlarla uğraşmaya gerek olmadığını düşünüyorlar

    • Ama terminal merkezli çalışıyorsan gün içinde onlarca shell açıyorsun
      Her shell, iş akışının bir parçası olduğu için 1 saniyelik gecikme bile hissediliyor
      Bu yüzden hızlı bir shell’in önemli olduğunu düşünüyorum
    • Buna karşılık, günde shell’i kaç kez açtığını soranlar da var
      En fazla 20 kez açılıyorsa bunun o kadar büyük bir mesele olmadığını söylüyorlar
    • Bir başkası da bunu basitçe kişisel tercih olarak görmenin daha doğru olduğunu söylüyor
      Yüksek performans elbette güzel ama bunun temel bir mesele olmadığını düşünüyor
  • Benim zsh yapılandırmam yaklaşık 90 satır ve sadece 3 eklenti kullanıyor: compinit, vcs-info, edit-command-line
    Başlangıçtan çıkışa kadar yaklaşık 0,32 saniye sürüyor
    Büyük depolarda branch bilgisini alırken gecikme yaşanıyor
    bkt önbellekleme yardımcı aracı (https://github.com/dimo414/bkt) bu tür sorunları çözebiliyor
    Sanırım Starship de benzer şekilde önbellekten yararlanıyor