처음 실행 시 zplugin을 설정할 때 .zshrc 파일에 문제가 있습니다. 목적은 zplug github에서 설치 프로그램을 가져와 쉘 설치를 실행하고 가져오는 것입니다.
이것은 내 .zshrc 파일입니다.
# Check if zplug is installed
if [[ ! -d ~/.zplug ]]; then
curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh
fi
source ~/.zplug/init.zsh
다음은 터미널 시작의 출력입니다.
✔ Checking if your zsh version is newer than 4.1.9 [SUCCEEDED]
✔ Installing zplug to /home/thomas/.zplug [SUCCEEDED]
All processes are successfully completed
답변1
하나를 추가해 보세요 |cat
. 이는 백그라운드에서 시작된 프로세스를 강제로 기다리는 방법입니다. cat
입력이 완료되기를 기다리는 동안 실제로는 이를 기다립니다. 이는 이러한 백그라운드 프로세스가 파이프를 cat
열어두기 때문에 작동합니다(표준 출력이 리디렉션되지 않는 한). 그래서:
curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh | cat
다음과 같은 방법으로 동일한 효과를 얻을 수 있습니다.
: $(curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh)
여전히 파이프이지만 이번에는 zsh
명령 대체를 위해 생성되었습니다.
~/.zshrc
나는 당신의 일부로 그러한 외국 코드를 실행하는 것이 나를 매우 불편하게 만든다는 것을 언급하지 않을 수 없습니다 .
답변2
소스 파일을 보면 스크립트가 git clone https://github.com/zplug/zplug.git $ZPLUG_HOME
함수를 통해 백그라운드에서 실행되고 execute()
프로세스가 완료될 때까지 기다리지 않고 메시지를 알리고 SUCCEEDED
종료되는 것으로 보입니다.
기본적으로 두 가지 옵션이 있습니다.
예를 들어 다음과 같은 while 루프를 추가하여 스크립트가 파일을 생성할 때까지 기다립니다.
while [[ ! -f ~/.zplug/init.zsh ]]; do sleep 1 done
구현을 확인하고
sleep
, 부동 소수점을 지원하는지 확인하고,sleep 0.1
타이밍에 문제가 있는지 시도하거나, inotify가 좀 더 효율적으로 될 때까지 기다리십시오(약간).내부 작업을 기다리도록 이 설치 스크립트를 수정하십시오. git에 있으므로 포크하거나 작성자에게 포크하도록 요청할 수 있습니다.