Infelizmente, isso não é possível. Alguns aplicativos, nos quais versões mais recentes introduziram novas sintaxes opcionais, recorreram a comentários de "compilação condicional", um exemplo notável é o MySQL.
Mas, felizmente, o OpenSSH ainda não está nessa fase.
Solução possível: Se todo o seu diretório pessoal estiver montado em sistemas operacionais diferentes, você poderá incluir um script em seu .profile que verifica a versão do SSH e, se não for suficiente para carregar seu arquivo de configuração, aliases ssh
to %código%. Por exemplo:
if [ "$(bc -l <<<"$(ssh -V 2> >(sed 's,^[^0-9]*,,;s,[^\.0-9].*,,')) < 6.5")" == 1 ]
then
alias ssh="/usr/bin/ssh -F/dev/null"
fi
Como alternativa, conforme o comentário @derobert, um alias pode não ser suficiente para alguns casos de uso, como ssh -F /dev/null
ou outros aplicativos que usam o OpenSSH como transporte e chamam o programa rsync
diretamente (sem deixar o shell resolva o alias). Se isso realmente for um problema, talvez você queira criar um script chamado ssh
em seu diretório bin local (geralmente ssh
ou ~/bin
). Quando um aplicativo resolve o caminho para o binário ~/.local/bin
, ele deve ver seu diretório bin local no início do caminho e executar seu script, que então executará a lógica necessária.
Talvez algo assim:
#!/bin/bash
if [ "$(bc -l <<<"$(ssh -V 2> >(sed 's,^[^0-9]*,,;s,[^\.0-9].*,,')) < 6.5")" == 1 ]
then
/usr/bin/ssh -F/dev/null "$@"
else
/usr/bin/ssh "$@"
fi