Executa uma função antes de programas específicos

0

Isso começou com a necessidade de adicionar chaves SSH a ssh-agend sob demanda, mas como isso não é possível com o OpenSSH, eu criei este script zsh. Mas por uma razão que não consigo descobrir, em vez de apenas executar "antes" ssh ou git , ele é executado antes de qualquer coisa , mesmo comandos vazios.

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 "$@"
}

Por que essa função é executada após cada comando, em vez de apenas quando git ou ssh é inserido?

    
por Tmplt 04.02.2016 / 18:15

1 resposta

1

Eu tentei a função com zsh -f (que eu deveria ter feito antes de postar ...) e descobri que ela funcionava como esperado. Algo mais está causando esse problema, por isso estou fechando essa pergunta quando for possível.

EDITAR :

Para os interessados em saber qual era a questão e como ela foi resolvida, veja abaixo.

Eu usei o framework zsh ZIM que usa vcs_info para verificar se o diretório atual é usado pelo git ou não. Isso requer uma chamada para git. vcs_info em si não chama git diretamente, ao que parece, não por padrão.

No entanto, graças a ft on #zsh no Freenode, adicionando

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

para ~/.zshrc depois que o framework foi criado, corrigiu esse problema.

    
por 04.02.2016 / 18:20