Git と Atom 用、プロキシ環境(大学)と非プロキシ環境(自宅)を切り替える方法 (Mac OS X El Capitan)
This entry illustrates how to automatically switch proxy settings between "behind-proxy" environment and "no-proxy" environment for Git and Atom editor on Mac OS X El Capitan.
↑ いちおう検索用に…
前提
想定する環境
- 大学(プロキシ利用 behind proxy): 「proxy.FOOBAR.ac.jp:NUMBER」を使ってね、と言われていることを想定。
- 家(非プロキシ no proxy): プロキシ設定使いたくない。
mac での設定
前提として、mac で Network Location*1 を複数作って切り替える、というところまではできているものとする。その上で、 git と atom(のパッケージのインストール・アプデ)を使うには、以下のような切り替えようスクリプトが必要になる。
以下のスクリプトは、 Macのネットワーク環境に合わせてHTTP_PROXYを切り替えるシェルスクリプト - Qiita をコピペ改変させてもらっただけ(多謝)。このページで git は問題ないが、atom はまた別の設定が必要だったのでそこを調べた。忘れそうなのでメモしておく。
やること
~/ に .switch_proxy というファイルを作る。その中身を以下のようにする。プロキシ情報と Location は自分の環境に合わせて書き換えること。
スクリプト
# 何度も出てくるので、プロキシ情報を proxy という変数に代入しておく proxy=proxy.FOOBAR.ac.jp:NUMBER # mac の Network Location をトリガにする switch_trigger_location=University # 大学用 function set_proxy() { export http_proxy=$proxy export ftp_proxy=$proxy export all_proxy=$proxy export https_proxy=$proxy ## for git git config --global http.proxy $proxy git config --global https.proxy $proxy git config --global url."https://".insteadOf git:// ## for Atom editor apm config set proxy http://$proxy apm config set http-proxy http://$proxy apm config set https-proxy http://$proxy apm config set strict-ssl false } # 自宅用 function unset_proxy() { unset http_proxy unset ftp_proxy unset all_proxy unset https_proxy ## for git git config --global --unset http.proxy git config --global --unset https.proxy git config --global --unset url."https://".insteadOf ## for Atom editor apm config delete proxy apm config delete http-proxy apm config delete https-proxy apm config delete strict-ssl } # if [ "`networksetup -getcurrentlocation`" = "$switch_trigger_location" -a "`networksetup -getairportnetwork en0 | awk '{print $4}'`" = "$switch_trigger_network" ]; then if [ "`networksetup -getcurrentlocation`" = "$switch_trigger_location" ]; then echo "Switch the settings for behind proxy network" set_proxy else echo "Unset proxy settings" unset_proxy fi
挙動
Atom に関しては、Network Location を切り替えるたびに、~/.atom/.apmrc ができたり消えたりする(プロキシセットすると生成され、アンセットすると消える)。なのでちょっと重い気がする。たぶんもっと頭いい方法ありそうなのだが、これで動いてるからいいや…
詰まったところ
http://$proxy というところ、これで正しいのだが、最初 http:// が必要だと思っていなくて、 $proxy だけにしていて、ダメだった。これだけで30分くらい無駄にした…
atom での unset のしかたは、ターミナルで $ apm config --help と打ったら set, get, delete, ... が使えるよ、と言ってたので、まぁ delete だろ、と思ってやっただけ。
参考にしたページ
- Macのネットワーク環境に合わせてHTTP_PROXYを切り替えるシェルスクリプト - Qiita
- ATOMエディタのproxy設定 - Qiita
- Using proxy server with Atom is very complex · Issue #5725 · atom/atom · GitHub
- proxy - Not able to connect to atom.io for themes and packages - Stack Overflow
*1:OS言語が日本語だと「ネットワーク環境」らしい。