curl:是否可以在shell中全局设置timeout

yx2lnoni  于 2023-05-18  发布在  Shell
关注(0)|答案(2)|浏览(182)

是否可以全局设置curl的超时值?例如,通过环境变量或配置文件?
我有一个shell脚本,其中有20个curl命令分散在各处,我希望避免到处指定--connect-timeout
这是用于shell脚本,而不是php或C/C++或...

rggaifut

rggaifut1#

就我在man page上看到的情况而言,没有这样的环境变量。
你可以创建一个函数curl

curl () {
    command curl --connect-timeout 60 "$@"
}

因此,无论何时调用curl,它都会调用这个函数,而这个函数又调用curl命令(command抑制shell函数查找)。

v7pvogib

v7pvogib2#

TL;DR
所有CLI选项都可以在默认配置文件中指定

# set timeout to 2.5 seconds globally
echo 'connect-timeout = 2.5' > ~/.curlrc

man page:* “当curl被调用时,它(除非使用-q,--disable)检查默认配置文件,并在找到时使用它”*。

-K, --config <file>

指定要从中读取curl参数的文本文件。在文本文件中找到的命令行参数将像在命令行中提供的那样使用。
选项及其参数必须在文件的同一行指定,并以空格、冒号或等号分隔。长选项名可以在配置文件中选择性地给出,不带开头的双破折号,如果是这样,冒号或等于字符可以用作分隔符。如果选项是用一个或两个破折号指定的,则选项与其参数之间不能有冒号或等号。
如果参数包含空格(或以:或=),则参数必须用引号括起来。在双引号内,可以使用以下转义序列:\、“、\t、\n、\r和\v。任何其他字母前面的反斜杠将被忽略。
如果配置行的第一列是'#'字符,则该行的其余部分将被视为注解。
在配置文件中的每一物理行只写入一个选项。
将文件名指定为-K,--config为'-',以使curl从stdin读取文件。
请注意,为了能够在配置文件中指定URL,您需要使用--url选项来指定它,而不是简单地将URL写在自己的行中。所以,它可能看起来类似于这样:
url = "https://curl.se/docs/"

# --- Example file ---
 # this is a comment
 url = "example.com"
 output = "curlhere.html"
 user-agent = "superagent/1.0"

 # and fetch another URL too
 url = "example.com/docs/manpage.html"
 -O
 referer = "http://nowhereatall.example.com/"
 # --- End of example file ---

当调用curl时,它(除非使用-q,--disable)检查默认配置文件,如果找到,即使使用-K,--config,也会使用它。将按以下顺序在以下位置检查默认配置文件:

  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
    1.非Windows:使用getpwuid查找主目录
    1.在Windows上,如果它在上面描述的序列中没有找到.curlrc文件,它会在curl可执行文件所在的同一目录中检查一个。
    在Windows上,每个位置检查两个文件名:.curlrc和_curlrc,首选前者。Windows上的旧版本仅检查_curlrc。

相关问题