zsh가 엄청나게 천천히 시작


63

ZSH는 새로운 터미널 창 생성에서 준비까지 약 1.5 초가 걸립니다. 범인이 확실하다고 확신합니다 compinit.

나는 좋은 문서를 찾을 수 compinit,없었지만 같은 파일에서 필요한 모든 것을 캐싱 해야하는 것처럼 보입니다 .zcompdump.

속도를 높이는 트릭이 있습니까?

답변:


33

oh-my-zsh랩톱에서 시작하는 데 약 1.5 초가 걸렸습니다. 나는 그것을 약 0.25 초로 낮추기 위해 취한 몇 가지 단계를 썼습니다 .

또 다른 친절한 영혼 은 나의 변화를 당신 의 oh-my-zsh 사본통합하는 데 필요한 단계를 요약했습니다 .

가장 큰 문제는 compinitfpath가 완전히 정의 된 후 한 번이 아니라 한 번의 추가 시간으로 불려지고 있다는 것입니다. oh-my-zshgithub의 내 지점에서 변경했습니다 . 변경 사항은 github에서 논의되었으며 소수의 사람들에게는 잘 작동하는 것 같습니다. oh-my-zsh가까운 시일 내에 변경 사항이 병합되기를 바랍니다 .


4
미래의 독자들을 위해, 나는 이러한 모든 변경 사항이 이제 업스트림으로 통합되었다고 생각합니다.
Michael Mior

1
변경 사항이 업스트림으로 이동되었을 수 있지만 플러그인에서 Git을 제거하면 크게 도움이되었습니다.
kylehotchkiss 2016 년

25

ZSH에는 속도 저하 현상이 있지만 Last Login:줄 을보기 전에 잠시 동안 터미널 창이 비어 있으면 속도 향상을 위해 로그 파일을 지워야합니다. 이것은 여전히 ​​OSX Lion의 문제이며 몇 개월마다 수행해야합니다. 절름발이 알아

명령은 다음과 같습니다.

sudo rm -rf /private/var/log/asl/*.asl

물론, 당신이 필요로 사전에이 문서를 읽어 그래서 당신은 아무것도를 실행하는 말한다 때문에, 무슨 정확히 무엇인지 sudo rm에 대해 생각해야 할 필요가. ZSH를 사용하면 시작하는 명령 줄에 대한 귀하의 역량을 입증 할 수 있기 때문에 여기에 두었습니다.


1
고마워, 너무 오랫동안 나를 괴롭힌 일에 대한 간단한 해결책!
Dean

7
-r디렉토리가 포함되어 있지 않으며 필요하지 않기 때문에 사용하지 않는 것이 좋습니다 . 누군가 sudo rm -rf / private/var/log/asl*.asl가 실수로 (개인 전에 공백) 입력 하면 눈물이 줄어 듭니다 .
Dean

1
심지어 더 잘못 될, cd /private/var/log/asl다음 rm -f *.asl. 또한 기록을 위해이 답변은 10 초에 가까운 시작 시간에서 저를 구했습니다. 많은 감사합니다!
개럿 디스코

1
나를 위해 일했다! BTW trash /private/var/log/asl*.asl. trash물론 설치해야합니다. brew install trash
Mike D

12

plugin = () 섹션에서 항목을 제거하여 가장 큰 개선이 이루어졌습니다. 'github'및 'brew'플러그인은로드 속도가 매우 느립니다.

또한 별칭을 설정 하고 프롬프트를 가속화하는 허브 도 제거했습니다 git.

시작 시간을 기록하기 위해 '/ usr / bin / time zsh -i -c exit'를 사용했지만 compinit큰 차이를 보이지는 않습니다.

속도를 높이기 위해 다른 사람들이하는 일을 듣는 것이 좋습니다.


1
githubbrew플러그인을 제거하면 즉시 문제가 해결되었습니다.
피터 Niederwieser

gitbrew플러그인은 나에게 매우 필수적이다. ruby플러그인 을 제거 하면 내 문제가 해결되었습니다. 감사.
Ivan ZG Xiao

6

사전 설치된 /bin/zsh또는 다른 것을 사용하고 있습니까? 나는 fink를 통해 설치 한 zsh가 zsh 템플릿을 포함하여 크게 느리게 시작하기 때문에 바닐라가 시작 되기 때문에 묻습니다 .

명시 적 덤프 파일 ( compinit -d dumpfile)로 실행하면 더 빨라 집니까? 매뉴얼 페이지는

다음에 compinit를 호출하면 전체 초기화를 수행하는 대신 덤프 된 파일을 읽습니다.


2
Oh My Zsh를 사용하고 있습니다 (기본 / bin / zsh를 사용한다고 생각합니다). Oh My Zsh의 플러그인과 그 밖의 것들을 모두로드하지 않으면 정말 빨리로드되지만 그 경우 compinit호출되지 않습니다. 수동으로 호출 compinit하면 시간이 조금 걸립니다. 어쩌면 Oh My Zsh가 compinit에 너무 많은 바인딩을 추가했기 때문일까요?
Eli

5

이제 oh-my-zsh는 상태를 쿼리하기 전에 특수한 git 구성 옵션 oh-my-zsh.hide-status를 확인합니다. 그래서 실행

자식 설정 oh-my-zsh.hide-status 1

문제가있는 저장소에.


나를 위해에서 git 플러그인을 비활성화해야했습니다 .zshrc. 현재 인터넷 응답 속도가 느려서 zsh 속도가 느려졌습니다.
Paschalis

5

Zsh 자체는 저를 위해 약 0.1 초 안에 시작됩니다. 방금 50,000 명령 기록 표시에 가까워지면서 첫 번째 프롬프트를로드하는 데 3 초가 더 걸렸다는 것을 알았습니다.

나는 당신이 느린 시작에 대한 다른 모든 이유를 찾는 방법을 모르지만, 내 첫 추측은 정확히 나의 것입니다. 나는 mv ~/.zsh_history zsh_history_backup3 초 시동이 이제 0.1 초 시동입니다. 흥미롭게도 /usr/bin/time /bin/zsh -i -c exit기록에로드하는 데 걸리는 시간을 캡처하지 못했습니다.

zsh 히스토리에 수만 개의 명령이 없다면 이것이 아닙니다. 내 ~/.zsh_history측정은 1.8MB입니다. 실수로 큰 물건을 명령으로 터미널에 붙여 넣는 것이 가능합니다. 이것은 역사를 빨리 팽창시킬 것입니다.


이것이 답입니다. oh-my-zsh로 멋진 작업 (많은 플러그인과 애드온)을하지 않았다면, 이력 로그 때문임을 보증합니다. 변화는 즉각적이다.
Sebastialonso

2

"af-magic"이라는 테마를 사용하고있었습니다

"뮤즈"로 전환하면 문제가 해결되었습니다.

~ / .zshrc를 편집하고 해당 줄을 수정하십시오.

#ZSH_THEME="random"
#ZSH_THEME="af-magic"
ZSH_THEME="muse"

답변 주셔서 감사합니다, 나는 af-magic에서 다른 것으로 변경하여 문제를 해결했습니다. af-magic을 흥미롭게 복원하는 것은 여전히 ​​훌륭합니다. 후드 아래에서 무슨 일이 있었는지 확실하지 않습니다.
sarat

0

~ / .oh-my-zsh / plugins / 디렉토리를 지운 후 속도가 크게 향상되었습니다. 그 안에는 사용하지 않는 플러그인이 많이있었습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.