在Windows中执行时,wget会在四个地方查找wgetrc配置文件,按照优先级高低它们分别是:
- 环境变量WGETRC指向的文件。
- 如果设置了环境变量HOME,则配置文件为%HOME%\.wgetrc。
- wget.exe所在目录的.wgetrc。
- wget.exe所在目录的wget.ini。
配置实例
现在,使用https的下载站点越来越多。如果不在wget配置文件里设置好ca-certificate参数,每次用wget从https网站下载时都必须在命令中加入--ca-certificate参数或者--no-check-certificate参数,比较繁琐。最简单的而且全局有效的配置方法就是把ca-certificate参数写入wget.exe所在目录的配置文件,即wget.ini或.wgetrc;其中wget.ini后缀符合Windows的规范,打开编辑更方便一些。若wget.exe保存在C:\Tools目录,则只须在C:\Tools目录创建以下两个文件:
1. 配置文件C:\Tools\wget.ini
ca-certificate=C:\Tools\ca-certificates.crt
2. 证书包文件C:\Tools\ca-certificates.crt
CA证书包文件ca-certificates.crt可以从Linux系统中复制过来,也可以从https://github.com/bagder/ca-bundle下载。Debian/Ubuntu系统中CA证书包文件是/etc/ssl/certs/ca-certificates.crt;RHEL/CentOS系统中CA证书包文件是/etc/pki/tls/certs/ca-bundle.crt。
参考
- GNU Wget主页
- 一个维护得不错的用MinGW编译的wget.exe: https://eternallybored.org/misc/wget/
- wget源代码wget-1.16.3/src/init.c中的wgetrc_file_name()函数:
/* Return the path to the user's .wgetrc. This is either the value of
`WGETRC' environment variable, or `$HOME/.wgetrc'.
Additionally, for windows, look in the directory where wget.exe
resides. */
char *
wgetrc_file_name (void)
{
char *file = wgetrc_env_file_name ();
if (file && *file)
return file;
file = wgetrc_user_file_name ();
#ifdef WINDOWS
/* Under Windows, if we still haven't found .wgetrc, look for the file
`wget.ini' in the directory where `wget.exe' resides; we do this for
backward compatibility with previous versions of Wget.
SYSTEM_WGETRC should not be defined under WINDOWS. */
if (!file)
{
char *home = home_dir ();
xfree (file);
home = ws_mypath ();
if (home)
{
file = aprintf ("%s/wget.ini", home);
if (!file_exists_p (file))
{
xfree (file);
}
xfree (home);
}
}
#endif /* WINDOWS */
return file;
}