Một quy ước điển hình trong UNIX là các chương trình (thường) đọc cấu hình khởi động của chúng từ các tệp được xác định trước khác nhau. Đây chỉ là một truyền thống, không phải bất cứ điều gì được xác định bởi POSIX hoặc bất kỳ tiêu chuẩn nào khác. Một chương trình UNIX điển hình, ví dụ như foobar
sẽ đọc, theo thứ tự ưu tiên sau:
~/.foobarrc ## User specific configuration parameters
/etc/foobarrc ## Global parameters, depending on taste
## `/etc/foobar/*(.conf)' might be chosen too
Có thể có một dự phòng /usr/share/
nhưng điều đó không phổ biến lắm.
Vì vậy, curl
ở đây theo quy ước và đọc cấu hình ban đầu của nó ~/.curlrc
. Và bằng cách thực hiện echo ipv4 >>~/.curlrc
, bạn đã nối chuỗi ipv4
vào tệp ~/.curlrc
.
Chuỗi ipv4
có ý nghĩa đặc biệt curl
- curl
sẽ sử dụng IPv4 cho độ phân giải máy chủ sau đó. Điều này tương tự với việc sử dụng -4
/ ipv4
như curl
là đối số từ dòng lệnh, nhưng tiết kiệm để ~/.curlrc
biến điều này thành vĩnh viễn.
Như bạn đã thiết lập ipv4
ở đó và bây giờ mọi thứ đều phù hợp với bạn, có lẽ bạn đã cấu hình IPv6 và curl
trước đây đã sử dụng IPv6 cho độ phân giải máy chủ (thành công), do đó không có dự phòng cho IPv4. Kết nối đến trang không thành công vì không phải tất cả các trang đều có máy chủ web được cấu hình để nghe trên địa chỉ IPv6, vì vậy socket()
cuộc gọi sẽ thất bại như chúng ta có thể thấy trong trường hợp này.