В практической работе с утилитой curl можно столкнуться со сложными строками для неё, где указано большое количество опций. Это загромождает командную строку и значительно усложняет работу с curl, и иногда даже может вообще перестать работать. Например, командная строка Microsoft Windows имеет довольно небольшую максимально допустимую длину.
Чтобы избежать таких ситуаций, curl предоставляет фичу под названием "config file", т. е. файл конфигурации. Она позволяет записать опции командной строки в обычный текстовый файл. Утилита curl каждый раз будет считывать этот файл и брать оттуда опции.
Файл конфигурации может быть указан в командной строке с помощью опции -K или --config, примерно так:
curl -K cmdline.txt http://example.com
В этом примере используется файл конфигурации cmdline.txt (конечно, вместо этого имени файла может быть любое другое), в котором указаны нужные опции по одной в каждой строке, например:
# это строка комментария. Следующая опция запросит перенаправление.
--location
# Следующая опция указывает делать запрос HEAD.
--head
# Следующая опция отключает проверку сертификата:
--insecure
В файле конфигурации могут быть указаны как короткие (через -), так и длинные (через --) варианты опций, точно так же, как они указываются в командной строке. Как специальная дополнительная функция можно также записывать опции в длинном формате без указания перед ними --, что упрощает чтение файла конфигурации (например, вместо '--insecure' можно указать 'insecure'). В таком стиле показанный выше файл можно записать следующим образом:
Опции командной строки, которые принимают аргумент, должны быть указаны в той же строке, что и опция. Например, изменение User-Agent HTTP header может быть сделано так:
user-agent "Everything-is-an-agent"
Чтобы файлы конфигурации были по своему содержимому больше похожи на настоящие конфигурационные файлы, допустимо также использовать '=' или ':' между опцией и её аргументом. Конечно, так делать необязательно, однако иногда более удобно для использования. Например, вот еще один вариант указать опцию user-agent:
user-agent = "Everything-is-an-agent"
Если параметр опции содержит пробел (или начинается с символа : или =), то параметр должен быть заключен в кавычки. Если нужны в параметры двойные кавычки или другие спецсимволы, то они экранируются обычным способом: \\, \", \t, \n, \r и \v. Обратный слеш \ перед любым другим символом игнорируется.
Аргумент для опции может быть указан без двойных кавычек, и curl будет обрабатывать следующий пробел или символ новой строки как конец аргумента. Для нашего примера строка user-agent не имеет пробелов, поэтому её можно записать без кавычек:
user-agent = Everything-is-an-agent
И наконец, если вы хотите в файле конфигурации указать URL, то это надо делать через опцию --url или просто через url, но не так как в командной строке, где URL подразумевается без указания опции. Так, в конфигурационном файле URL предоставляется следующим образом:
url = "http://example.com"
[Файл конфигурации по умолчанию]
Когда запускается утилита curl, она всегда (за исключением использования -q) проверяет наличия файла конфигурации по умолчанию, и использует его, если этот файл был найден.
Файл конфигурации по умолчанию curl проверяется в следующих местах и в таком порядке:
1. $CURL_HOME/.curlrc
2. $XDG_CONFIG_HOME/.curlrc (добавлено в 7.73.0)
3. $HOME/.curlrc
4. Windows: %USERPROFILE%\\.curlrc
5. Windows: %APPDATA%\\.curlrc
6. Windows: %USERPROFILE%\\Application Data\\.curlrc
7. Не-Windows: используется getpwuid, чтобы найти домашнюю директорию (home).
8. На Windows, если не был найден файл .curlrc в описанной выше последовательности, то его наличие будет проверено в той же директории, где был размещен исполняемый файл curl.
На Windows проверяется два имени файла на одно из упомянутых выше мест: .curlrc и _curlrc, предпочитая первое. Старые версии curl на Windows проверяют только наличие файла _curlrc.
[Ссылки]
1. curl config file site:everything.curl.dev. |