我的笔记本电脑上设置了多个网络位置:工作、家庭等。工作网络都设置了代理服务器,而其他网络则没有。这对于 OSX 应用程序(Safari、Mail,甚至是 Firefox 和 Thunderbird)都很好用,并且系统代理插入。
对于终端应用程序,例如git
、、和,我的 中有以下内容:svn
gem
curl
.bash_profile
export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY
我的问题是:是否有某种方法可以让导出的变量从系统当前位置查找值?我希望它能够动态完成(因此如果我在终端会话期间更改位置,它也会更改),但我很乐意只在.bash_profile
运行时设置它(这意味着当我更改位置时我必须启动一个新的终端会话)。
谢谢!
答案1
Mac OS X 是什么版本?我不确定该工具是否包含在 Mac OS X 10.4 或更早版本中。
networksetup
应该是你要找的,即sudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE
(例如 sudo networksetup -getwebproxy Airport)
输出如下:
Enabled: Yes
Server: SERVER_ADDRESS
Port: 123
Authenticated Proxy Enabled: 0 for false, 1 for true
因此您需要将输出转换为可用的内容。
使用 awk 几次的非常粗略的示例(我的 awk 技能相当基础)是:
sudo networksetup -getwebproxy Airport | awk {'print $2'} | awk {'getline l2; getline l3; print "http://"l2":"l3'} | head -n 1
输出结果http://SERVER_ADDRESS:123
答案2
此外,此命令可能有助于发现其他代理设置:scutil --proxy
答案3
答案4
我刚刚做了这个scutil --proxy
,复制了HTTPPort
参数和HTTPProxy
参数。然后我做了这个export ALL_PROXY=HTTPPort:HTTPProxy
,您将用参数替换HTTPPort
和HTTPProxy
。最后,我做了这个,/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
现在您就可以开始了。