Me deparei com esse comportamento e queria saber se ele é intencional e/ou documentado, porque não consegui encontrar nada.
A página de manual da minha versão do ssh indica ssh_config
/ Include
:
A diretiva include pode aparecer dentro de um bloco Match ou Host para realizar a inclusão condicional.
Dados os seguintes arquivos:
# ~/.ssh/config
Host doesnotexist.nonexistanttld
Include ~/.ssh/inc
# ~/.ssh/inc
Match host * exec "touch do-not-touch"
Posso observar isso:
$ ssh foo
ssh: Could not resolve hostname foo: nodename nor servname provided, or not known
$ ls
do-not-touch
A razão para isso parece ser esta:
debug3: $HOME/.ssh/config line 2: Including file $HOME/.ssh/inc depth 0 (parse only)
debug2: checking match for 'host * exec "touch do-not-touch"' [...]
(observe o parse only
)
Eu não esperaria que isso acontecesse. Então, novamente, isso é intencional? Existe uma boa razão para isso em vez de apenas ler, analisar e executar correspondências em arquivos realmente incluídos?