一样的命令, emacs 中 shell 执行错误, 终端执行正确

我想用 anki-editor, 结果发现不起作用, 报错:

End of file while parsing JSON

调试了一下, 发现问题在于:

          (call-process "/usr/bin/curl" nil t nil "localhost:8765"
                                                  "--silent"
                                                  "-X POST"
                                                  "--data-binary"
                                                  (concat "@" "/Users/quebec/Downloads/input.json"))

会返回 7, 没有得到正确结果. 用 shell-command:

(shell-command "/usr/bin/curl localhost:8765 --silent -X POST --data-binary @/Users/quebec/Downloads/input.json")

也是得到 7.

我打开 emacs 的 shell, 执行:

~/notes/org:master λ /usr/bin/curl localhost:8765 --silent -X POST --data-binary @/Users/quebec/Downloads/input.json
~/notes/org:master λ echo $?
7

发现也是得到 7, 但一模一样的命令, 在一般的终端下执行, 明明就没问题, 得到:

{"result": 6, "error": null}

简直匪夷所思

忙猜 Emacs 里面某个环境变量有问题。。。

设了代理,然后没有绕过 localhost?

是这个问题, 我发现 echo $all_proxy 以及 echo $ALL_PROXY 会得到 socks5://127.0.0.1:10808, 这也非常不可思议, 因为我所有的 bash startup file 都没设置过, 很久以前前我确实设置过, 但现在真没有, 我一般的终端这两个变量也是空的. 奇怪, eshell 哪里初始化这个变量的呢?

发现环境变量设置是怎么回事了, spacemacs 会设置(见Frequently Asked Questions), SPC f e e 编辑, SPC f e E reload.