Uma convenção típica no UNIX é que os programas (geralmente) leem sua configuração de inicialização de vários arquivos predefinidos. Isso é apenas uma tradição, não nada definido pelo POSIX ou qualquer outro padrão. Um programa UNIX típico, por exemplo, foobar
seria lido, na seguinte ordem de precedência:
~/.foobarrc ## User specific configuration parameters
/etc/foobarrc ## Global parameters, depending on taste
## `/etc/foobar/*(.conf)' might be chosen too
Pode haver um retorno, /usr/share/
mas isso não é muito comum.
Então, curl
aqui , seguindo a convenção e lendo sua configuração inicial ~/.curlrc
. E, ao fazer isso echo ipv4 >>~/.curlrc
, você anexou a string ipv4
ao arquivo ~/.curlrc
.
A string ipv4
tem um significado especial para curl
- curl
usará o IPv4 para a resolução do host. Isto é análogo a usar -4
/ ipv4
como curl
argumento de linha de comando, mas salvando a ~/.curlrc
torna este permanentes.
Como você definiu ipv4
lá e agora tudo funciona para você, presumivelmente você tem o IPv6 configurado e curl
estava usando o IPv6 anteriormente para a resolução (bem-sucedida) do host, portanto, não há substituto para o IPv4. A conexão com o site estava falhando porque nem todos os sites têm seus servidores da Web configurados para escutar nos endereços IPv6; portanto, a socket()
chamada falharia como podemos ver neste caso.