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 (or Wi-Fi), and that your proxy is running on localhost on port 8080.

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.