Типичное соглашение в UNIX состоит в том, что программы (обычно) читают свою конфигурацию запуска из различных предопределенных файлов. Это просто традиция, а не что-либо определенное POSIX или любым другим стандартом. Типичная программа UNIX, например, foobar
будет читать в следующем порядке приоритета:
~/.foobarrc ## User specific configuration parameters
/etc/foobarrc ## Global parameters, depending on taste
## `/etc/foobar/*(.conf)' might be chosen too
Там может быть запасной вариант, /usr/share/
но это не очень распространено.
Итак, curl
здесь следуем соглашению и читаем его исходную конфигурацию из ~/.curlrc
. И тем самым echo ipv4 >>~/.curlrc
вы добавили строку ipv4
в файл ~/.curlrc
.
Строка ipv4
имеет особое значение для curl
- curl
будет использовать IPv4 для разрешения хоста. Это аналогично использованию аргумента -4
/ ipv4
as curl
из командной строки, но сохранение ~/.curlrc
этого параметра делает его постоянным.
Поскольку вы установили ipv4
там и теперь все работает для вас, вероятно, у вас настроен IPv6, и curl
ранее вы использовали IPv6 для (успешного) разрешения хоста, поэтому нет возврата к IPv4. Соединение с сайтом было неудачным, потому что не на всех сайтах настроены веб-серверы для прослушивания IPv6-адресов, поэтому socket()
вызов не будет выполнен, как мы видим в этом случае.