Atribua um callback / hook no bash para que a qualquer momento um comando seja executado, outro seja executado primeiro?

3

Sempre que executo ssh (ou scp ou lftp ), gostaria de executar gpg-connect-agent updatestartuptty /bye primeiro. (É uma longa história.)

Atualmente, tenho uma função definida no meu .bashrc:

ssh()
{
  gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1
  $(which ssh) "$@"
}

Isso funciona muito bem, mas imagino que possa haver problemas de portabilidade se usado em outro sistema em que o ssh já tenha um alias semelhante para outra coisa.

Existe alguma maneira de definir uma "rechamada" de pré-execução em ssh sem substituir o próprio comando ssh ? (Eu estou ciente de que você pode usar trap DEBUG para executar um determinado comando antes do comando EVERY, mas eu gostaria de limitar isso apenas aos comandos que eu preciso.)

    
por Ryan Lue 07.07.2017 / 08:43

1 resposta

1

Sugiro escrever assim:

ssh()
{
  gpg-connect-agent updatestartuptty /bye &>/dev/null
  command ssh "$@"
}

Veja help command para mais detalhes.

E não, não há outro "mecanismo de pré-retorno". Se houver, o que você está fazendo é basicamente "isso".

    
por 07.07.2017 / 19:10

Tags