특정 프로그램 이전에 기능 실행

특정 프로그램 이전에 기능 실행

이는 요청 시 SSH 키를 추가해야 한다는 필요성에서 시작되었지만 ssh-agendOpenSSH는 그렇게 할 수 없기 때문에 이 zsh 스크립트를 생각해 냈습니다. 하지만 알 수 없는 이유로 ssh"before" 또는 before 를 실행하는 대신 git이전에 실행됩니다.아무것, 심지어 빈 명령도 가능합니다.

git ssh () {
    # Does the agent handle any keys?
    ssh-add -l &>/dev/null

    # True if last executed command (ssh-add -l) exits non-zero.
    if [ $? -ne 0 ]; then
        ssh-add
    fi

    # Execute git or ssh with all parameters, and not this function
    command $0 "$@"
}

or 를 입력할 때만 실행되는 것이 아니라 모든 명령 후에 이 함수가 실행되는 이유는 무엇입니까 git?ssh

답변1

기능을 사용해 보았는데 zsh -f(게시하기 전에 완료했어야 했는데...) 예상대로 작동하는 것으로 나타났습니다. 다른 문제로 인해 이 문제가 발생했으므로 가능하면 질문을 닫겠습니다.

편집하다:

문제가 무엇인지, 해결 방법이 궁금하신 분들은 아래를 참고하세요.

zsh 프레임워크를 사용하고 있습니다vcs_info현재 디렉토리가 git에서 사용되는지 확인하는 데 사용됩니다 . 이를 위해서는 git을 호출해야 합니다. vcs_info기본적으로 git을 직접 호출하지 않는 것 같습니다.

그러나 Freenode의 #zsh에 대한 ft 덕분에

zstyle ':vcs_info:git:*:-all-' command =git

프레임워크를 얻은 후 ~/.zshrc이 문제가 해결되었습니다.

관련 정보