如何让eshell使用代理?

我的url-proxy-services

(("http" . "127.0.0.1:7890") ("https" . "127.0.0.1:7890"))

socks-server

("Default server" "127.0.0.1" 7890 5)

这样设置以后eww、shell和term都可以通过代理访问google,唯独eshell无法使用代理(wget https://google.com不会向代理发送请求)。

怎么设置可以让eshell使用代理呢?

试试 with-proxy: 在局部范围内使用代理

(with-proxy (eshell))

也可以写个 advice 把某个具体的函数用 with-proxy 包裹起来,尽可能缩小影响范围。

确实可以,感谢大佬

这是我最终的配置:

(use-package with-proxy)

(defun my-proxy-around (orig-fun &rest args)
  "Wrap a function with proxy configration"
  (with-proxy
    :http-server "127.0.0.1:7890"
    (apply orig-fun args)))

(advice-add 'eshell :around #'my-proxy-around)

如果有人遇到和我一样的问题可以参考一下。

如果不打算在 advice 里面对参数做任何处理,可以更偷懒一点:

(defun my-proxy-around (&rest args)
  "Wrap a function with proxy configration"
  (with-proxy
    :http-server "127.0.0.1:7890"
    (apply args)))

cool,感谢大佬