컬 후 소스 파일에 .zshrc가 필요한 최고의 코드

컬 후 소스 파일에 .zshrc가 필요한 최고의 코드

처음 실행 시 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에 있으므로 포크하거나 작성자에게 포크하도록 요청할 수 있습니다.

관련 정보