我的系统上的许多脚本都依赖这些脚本,lynx
而这些脚本又无法通过我的代理。更具体地说,lynx
成功获取除用户 ID 和密码字段之外的全局代理设置,建议-pauth
改为在命令行上使用:
lynx -pauth=proxyuserid:proxypass
我不能轻易做到这一点,因为 lynx 是间接调用的。但是我应该如何做,才能在全局范围内对所有 lynx 调用应用这些设置?配置文件——找不到有关代理授权的任何内容。一个同名的 bash shell 包装器lynx
调用实际的lynx
with -pauth
- 不知何故我无法让它工作。
更新。我有完整描述代理的环境变量,例如,
http_proxy=http://userid:pass@proxyserver:port
Lynx 可以从中正确读取代理服务器和端口,但由于某种原因没有读取用户/密码字段(例如与 wget 不同)。
因此,我现在使用 lynx 包装脚本,如下所示:
envproxy=${http_proxy%@*}
/usr/bin/lynx -pauth=${envproxy:7} "$@"
答案1
lynx
如果脚本/程序调用时未指定路径,则用包装脚本替换将起作用lynx
,因此系统将在变量中列出的目录中搜索它PATH
。
您必须找出lynx
位置,例如通过键入type lynx
。
我想可能是/usr/bin/lynx
。
PATH
调用的脚本/程序的变量必须在(例如)的位置之前lynx
具有不同的目录(例如)。如果不是这种情况,您可能需要延长。/usr/local/bin
lynx
/usr/bin
PATH
例子:
假设你的PATH
设置为
PATH=/usr/bin:/bin:/sbin:/usr/bin/X11
你可以用它来扩展它
PATH="/usr/local/bin:$PATH"
PATH
在为脚本/程序设置的启动脚本之一中。具体如何执行此操作取决于这些脚本/程序的调用方式。
/usr/local/bin/lynx
然后你可以创建一个像这样的shell 脚本:
#! /bin/sh
# Here you could do what is needed to get the user name and password for the
# proxy authentication and use these instead of hard coded values.
/usr/bin/lynx -pauth=proxyuserid:proxypass "$@"
当脚本/程序想要执行时,lynx foo bar
它会先找到您的脚本,/usr/local/bin/lynx
然后再找到/usr/bin/lynx
.
然后脚本将调用/usr/bin/lynx -pauth=proxyuserid:proxypass "foo" "bar"
.
当然,您可以使用不同的位置来代替/usr/local/bin
。
如果脚本/程序执行 lynx 时指定了类似/usr/bin/lynx foo bar
.在这种情况下,您可以重命名/usr/bin/lynx
为 例如并创建一个以相同方式调用的/usr/bin/lynx.real
脚本。/usr/bin/lynx
/usr/bin/lynx.real