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.