How to set proxy on OS X Terminal permanently?
For every new session in OS X terminal, I have to make my proxy settings again. I do this by entering the command
export http_proxy="username:password@ip address:port number"
Is there a way to make these proxy settings once for all?
Your http proxy (just for some web sites not https ones and not for the rest of the internet) can be set for each terminal session by adding the line
export http_proxy="username:password@ip address:port number"
to your ~/.bash_profile file if using bash (the default from Panther to Mojave) or for later macOS the default shell is zsh and the file to use is ~/.zshrc
Note this will only affect command line programs.
Set system-wide HTTP proxy
To globally set an http proxy system-wide on MacOS (not just for a terminal session) you can use:
networksetup -setwebproxy wi-fi localhost 8080
networksetup -setwebproxystate wi-fi on
This assumes your network interface is called
wi-fi
(orWi-Fi
), and that your proxy is running onlocalhost
on port8080
.
To disable the proxy:
networksetup -setwebproxystate wi-fi off
This is equivalent to setting the proxy via mac system settings > Network > wi-fi > Advanced > Proxies > Web proxy.
Set system-wide SOCKS5 proxy
networksetup -setsocksfirewallproxy wi-fi localhost 1080
networksetup -setsocksfirewallproxystate wi-fi on
To disable the socks proxy use:
networksetup -setsocksfirewallproxystate wi-fi off
Getting the correct network interface name
All the commands above assume your netowork interface is wi-fi
. If you are connected via ethernet then most likely the interface will be en<SOME_NUMBER>
e.g. en0
and you'll need to use that instead of wi-fi
.
To find the active network interface see what comes as the first non-disabled interface when you type:
networksetup -listnetworkserviceorder
Alternatively, you can use ifconfig
or networksetup -listallhardwareports
. See more.
If you need a GUI wrapper for setting the HTTP/SOCKS/PAC proxies then check out this answer. The bitbar script linked in the answer also contains the commands for setting a SOCK5 or PAC proxy. Update: Bitbar has been renamed to xbar — it's an open-source GUI for text-mode scripts written in bash/applescript/node/golang/etc.