docker-machine の env 設定が MacVim と競合する、らしい
docker-machine を使っている環境上で MacVim を起動すると、なぜか編集ウィンドウが開かない問題に遭遇したので、対応内容をメモ。
結論から言うと、 docker-machine の仮想マシン起動後に設定される各種環境変数(たとえば DOCKER_HOST
)を自動設定するために .bash_profile
の中に書いていた
if [ "$(docker-machine status myvm)" = "Running" ]; then
eval "$(docker-machine env myvm)"
fi
の部分、特に eval "$(docker-machine env myvm)"
が問題を引き起こしており、これを MacVim からの起動時だけ実行しないようにすることで解消した。具体的には、 MacVim から起動した時は TERM
環境変数が dumb
となり、通常起動時の値とは異なっていることを利用して
if [ "$TERM" != "dumb" -a "$(docker-machine status myvm)" = "Running" ]; then
eval "$(docker-machine env myvm)"
fi
とした。
具体的にこの行がダメな理由についてはよくわからない。 MacVim 自体のソースコードを追った結果、 MacVim は mvim コマンドを開くために内部的にログインシェルを開き、そこからコマンドを起動しているらしく、その流れで .bash_profile
が読み込まれて実行されているようだったが、 eval
自体は同じ .bash_profile
中の他の部分でも使用しているので、直接それが問題のようには見えなかった。この辺りは機会があれば調べてみることに。