Uma convenção típica no UNIX é que os programas (normalmente) lêem sua configuração de inicialização de vários arquivos predefinidos. Isto é meramente uma tradição, não algo definido por POSIX ou qualquer outro padrão. Um programa típico do UNIX, por ex. foobar
iria ler, 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 em /usr/share/
, mas isso não é muito comum.
Então, curl
aqui seguindo a convenção e lendo a configuração inicial de ~/.curlrc
. E fazendo echo ipv4 >>~/.curlrc
, você incluiu a string ipv4
no arquivo ~/.curlrc
.
A string ipv4
tem um significado especial para curl
- curl
usará o IPv4 para a resolução do host. Isso é análogo ao uso do argumento -4
/ ipv4
as curl
na linha de comando, mas salvar em ~/.curlrc
torna isso permanente.
Como você definiu ipv4
lá e agora tudo funciona para você, presumivelmente você configurou o IPv6 e curl
estavam usando o IPv6 anteriormente para a resolução do host (bem-sucedida), portanto, não há retorno para o IPv4. A conexão com o site estava falhando porque nem todos os sites têm seus servidores da Web configurados para ouvir em endereços IPv6, portanto, a chamada socket()
falharia, como podemos ver neste caso.