libcurl-env(3)
π libcurl-env(3) β Library Functions Manual π
okay bestie, listen up: this is libcurl-env(3), and it's literally the cheat sheet for every environment variable libcurl actually understands π
β¨ NAME β¨
libcurl-env β the environment variables libcurl understands, like, all of them πΈ
π¦ DESCRIPTION π¦
libcurl reads and understands a whole little set of environment variables that, if you set them, control and change its behavior. This is the full list of variables you can set, plus what each one does. no gatekeeping, we're giving you everything π
Also, quick heads up: curl, the command line tool, supports its own set of additional environment variables independently of this list. different vibes, different list π
[scheme]_proxyβ okay so when libcurl gets a URL for a transfer, the first thing it does is pull out the scheme part of that URL and check if there's a proxy set for that scheme in the matching environment variable. so a URL likehttps://example.commakes libcurl use thehttp_proxyvariable, while a URL likeftp://example.comuses theftp_proxyvariable. iconic behavior fr fr π¦
These proxy variables also get checked in their uppercase versions, except http_proxy which is only ever used lowercase. and note that some systems actually handle environment variables case-insensitively, in which case HTTP_PROXY still works, periodt.
There's one exception and it's for the WebSocket ws and wss URL schemes π there, libcurl checks ws_proxy or wss_proxy first, but if those aren't set it falls back and tries the http and https versions instead if they're set. slay, adaptive.
ALL_PROXYβ the "set a proxy for literally everything" setting, independent of whatever scheme is being used. but lowkey the scheme-specific variables override this one if they're set, so it's giving backup plan energy πCURL_SSL_BACKENDβ when libcurl is built to support multiple SSL backends, it picks a specific backend on first use. if the program using libcurl doesn't make a selection, then this variable's selection is what gets used. set a name that isn't a built-in alternative and libcurl just stays with the default π
The SSL backend names (case-insensitive, bestie): GnuTLS, mbedTLS, OpenSSL, Rustls, Schannel, wolfSSL β¨
HOMEβ when the netrc feature is in play (CURLOPT_NETRC(3)), this variable gets checked as the primary way to find the "current" home directory where the.netrcfile is likely hanging out πUSERPROFILEβ when the netrc feature is in play (CURLOPT_NETRC(3)), this variable gets checked as the secondary way to find the "current" home directory (on Windows only, iykyk) where the.netrcfile is likely to exist π»NETRCβ the filename used as the netrc file whenCURLOPT_NETRC(3)is used withoutCURLOPT_NETRC_FILE(3). (Added in8.16.0, so don't come at her if you're on an older build π«Ά)NO_PROXYβ same functionality as theCURLOPT_NOPROXY(3)option: it hands libcurl a comma-separated list of hostname patterns for which libcurl should not use a proxy. bye-bye proxy, no cap π«SSLKEYLOGFILEβ when this is set and libcurl is running with an SSL backend that supports the feature, libcurl saves SSL secrets into the given filename. and with those SSL secrets, other tools (like Wireshark π) can decrypt the SSL communication and analyze/view the traffic. literally main character energy for debugging π₯
β οΈ okay this part matters, bestie: these secrets and this file might be sensitive. users are advised to take precautions so that they're not stolen or otherwise inadvertently revealed. protect the file like it's your diary ππ
π Debug Variables π
Debug variables are intended for internal use and are documented in libcurl-env-dbg(3). not for you, unless you're built different π§
π SEE ALSO π
and that's the whole page, bestie π this was libcurl (that's the source/version, yes bestie, version libcurl) dropped on 2026-10-12, and the page is libcurl-env(3). go forth and configure your env responsibly π«Άβ¨π
π¦ where this page comes from
- fedora 44: libcurl-devel 8.18.0-14.fc44 Β· curl
- fedora 44: libcurl-devel 8.18.0-14.fc44 Β· curl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms