iTerm / Terminal OS X powoli otwiera powłokę

14

Używam OS X 10.8, a ostatnio zauważam, że iTerm2 czasami może działać dość wolno po otwarciu nowej powłoki. Zajmuje mi to około 5 sekund, zanim coś mogę zrobić. Może nie wydaje się dużo, ale dużo pracuję w powłoce, więc może być dość irytująca.

Używam ZSH z oh-my-zsh.

Próbowałem Terminalu, odinstalowałem oh-my-zsh, wyczyściłem wszystko, co niepotrzebne z plików startowych (.zshenv, .zlogin, .zprofile, .zshrc, .zlogout) i wyczyściłem pliki ASL w / var / log / asl i chociaż nieco się obniża (jak 0,20 s), nic nie sprowadza go do natychmiastowego lub nawet poniżej 3,0 s.

Czy ktoś ma inny pomysł?

Dymitr
źródło
Powiązane pytania: 31403 , 41743 , 236953 , 444614
Lri
Czy próbowałeś zmienić polecenie dla nowych powłok na coś takiego login -pfq username /usr/local/bin/zsh?
Lri
@ lauri-ranta: Próbowałem wszystkiego w tych innych wątkach, ale bezskutecznie. Próba „login -pfq nazwa użytkownika / usr / local / bin / zsh” również nie przyniosła rezultatu.
Dimitri
Aby sprawdzić, czy jest on powiązany z powłoką lub iTerm2: ile czasu zajmuje uruchomienie nowej powłoki? (wchodząc zshw już otwarte okno terminala)?
Matteo,
dodaj do .zshrc:[ $((RANDOM & 1)) -eq 0 ] && do not sleep 5
theoden8

Odpowiedzi:

18

Wyczyść logowanie /var/log/asl, tj.

rm -rf /var/log/asl/*.asl
neo
źródło
1
Czy mógłbyś wyjaśnić, DLACZEGO iterm jest spowalniany przez ten folder dziennika i czy jest coś, co można zrobić, aby faktycznie powstrzymać ten problem?
David
2
@ David możesz sprawdzić ten link, aby zrozumieć powód, dla którego nowe karty są wolne. apple.stackexchange.com/a/71930/89583
Archan Mishra
Wow --- bardzo dziękuję --- za iterm2 wydaje się, że odpowiedzią jest skorzystanie z sugestii na dole tej strony (/ bin / bash -il) od faceta, który został oceniony na -1. Działa świetnie.
David,
12

Zgodnie z komentarzem Archana Mishry powyżej, dla iTerm 2 odpowiedzią jest skonfigurowanie niestandardowego polecenia terminala, /bin/bash -il które omija przeszukiwanie całkowicie dzienników systemu ASL. iterm2 otwiera się teraz natychmiast.

David
źródło
1

Są to kroki, których użyłem, aby zoptymalizować szybkość uruchamiania powłoki i zmniejszyć opóźnienie w wykonywaniu poleceń -

  1. Jeśli używasz powerlevel9k, zalecę natychmiastowe przejście na powerlevel10k .

Powerlevel10k to motyw dla Zsh. Podkreśla szybkość, elastyczność i gotowość do pracy. Jest to ponowna implementacja popularnego motywu Powerlevel9k zsh. Wygląda dokładnie tak samo, biorąc pod uwagę tę samą konfigurację, ale wyświetla monit 10-100 razy szybciej. Jest zoptymalizowany na każdym poziomie stosu, aż do użycia łatanej wersji libgit2, która może skanować repozytorium 4 razy szybciej niż oryginał. Może usunąć opóźnienie uruchamiania Zsh, nawet jeśli nie jest to spowodowane motywem z funkcjami takimi jak Natychmiastowy monit.

  1. Przejdź do Preferencji -> Profile -> Ogólne -> Polecenie i wybierz opcję Polecenie zamiast Powłoki logowania i wklej poniższe polecenie w polu obok niego.
login -pfq username /usr/local/bin/zsh -il

Nie zobaczysz ostatnio drukowanego czasu logowania podczas rozpoczynania nowej karty. Jeśli zsh nie jest obecny w lokalizacji / usr / local / bin / zsh, będziesz musiał zainstalować zsh za pomocą brew. Domyślne Zsh dostarczane przez Mac to / usr / bin / zsh i może używać starszej wersji, takiej jak 5.2, która może powodować małą prędkość, gdy jest używana z iTerm lub oh-my-zsh.

  1. Aby szybko wkleić w zsh, wykonaj poniższe polecenie w terminalu.
mkdir -p $ZSH_CUSTOM/lib && touch $ZSH_CUSTOM/lib/misc.zsh
  1. Punkt 2 powinien już zadbać o wolne czasy logowania. Ale dla bezpieczeństwa wykonaj poniższe polecenie
mkdir -p .hushlogin
  1. Istnieje wiele wtyczek, których możesz używać, które są powolne i powodują opóźnienia. Musisz wskazać te wtyczki i usunąć je. W tym celu będziesz potrzebować profilowania zsh. Kliknij ten link, aby uzyskać więcej informacji -

https://stevenvanbael.com/profiling-zsh-startup

Shubham Jain
źródło
Witamy w Super User! Nie zamieszczaj tej samej odpowiedzi na wiele pytań. Jeśli te same informacje naprawdę odpowiadają na oba pytania, to jedno pytanie (zwykle nowsze) powinno zostać zamknięte jako duplikat drugiego. Możesz to wskazać, głosując, aby zamknąć go jako duplikat lub, jeśli nie masz wystarczającej reputacji, podnieść flagę wskazującą, że jest to duplikat. W przeciwnym razie dostosuj swoją odpowiedź do tego pytania i nie wklejaj tej samej odpowiedzi w wielu miejscach.
DavidPostill