VSCodeで"code"コマンドをinstallしたはずなのに、"command not found"になる → VSCodeの場所を見直そう

Visual Studio Codeは、ターミナルからcodeコマンドで起動するように設定できます。
ところが、Visual Studio Codeを終了するたびに、なぜかcodeコマンドが効かなくなってしまいました。
原因はVSCodeがDownloadsフォルダにあったせいでした。

参考: github.com

検証

どうしてDownloadsフォルダのVSCodecodeコマンドを維持できないのか、試してみました。

まずはcodeコマンドを設定して...
f:id:hiroga_cc:20180718193756p:plain

codeコマンドについて調べてみる

$ which code 
/usr/local/bin/code
$ ls -l $(which code)
lrwxr-xr-x  1 hiroaki  wheel  167 Jul 18 19:38 /usr/local/bin/code -> /private/var/folders/zb/d8jy9vyx53vbv1t5mgwj06rw0000gn/T/AppTranslocation/877962BA-DEEA-4883-BB3D-F6F6B276C7F9/d/Visual Studio Code.app/Contents/Resources/app/bin/code

# VSCodeを終了すると...
$ which code
# 何も表示されない

なんだこれ!ものすごい変なところにいるぞ。

一方、ちゃんとApplicationのVSCodeを起動してcodeを設定した場合は、

ogasawarahiroaki-no-MacBook-Pro:~ hiroaki$ which code
/usr/local/bin/code
ogasawarahiroaki-no-MacBook-Pro:~ hiroaki$ ls -l $(which code)
lrwxr-xr-x  1 hiroaki  wheel  68 Jul 18 19:44 /usr/local/bin/code -> /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code

# VSCodeを終了しても...
$ which code
/usr/local/bin/code

どうやら、Downloadsフォルダのアプリケーションはいったん一時フォルダにコピーされてから実行されるらしい。
DLL読み込み脆弱性みたいなのの対策かな...?