はじめに
みなさん、こんにちは。torihaziです
先ほど、vscodeのcmd shift pから codeコマンドのインストールをすることで
ターミナルからvscodeを実行できるようにしたばっかなのですが
vscodeを閉じて再度ターミナルからcodeを実行すると
command not foundとされて実行できませんでした。
なぜか。そもそも あのvscodeから行う操作は裏で何をしているのか
気になったので調べてみました。
そもそも何のこと?

この"シェルコマンド~~~~インストールします" をすると
ターミナルからcode .とするとvscodeが開けるようになるというアレです。
それするとどうなるの?
/usr/local/bin/code というものが/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code へのシンボリックリンク になります。
※/Applications/Visual Studio Code.app/Contents/Resources/app/bin/codeの
/Applications/Visual Studio Code.app/はvscodeをインストールしたフォルダになります。
つまり/usr/local/bin/code = code を実行すると /Applications/Visual Studio Code.app/Contents/Resources/app/bin/codeを実行していることと同義になります。
なぜcodeとターミナルに入力するだけで良いのかはPATHに/usr/local/binが追加されているからです。
じゃあどうすれば良いか。
これさえ分かればすることは1つですね
/usr/local/bin/codeというものが/Applications/Visual Studio Code.app/Contents/Resources/app/bin/codeへのシンボリックリンク になります。
これですね。
ln -s /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code /usr/local/bin/code
そもそも原因は何だったのか?
シンボリックリンク先のパスが一時的なキャッシュを利用したパスだったためです。
そのリンクはvscodeを閉じると削除され、結果次の時は使えなくなりcodeも実行できなくなったというのが今回のオチです。
終わりに
いかがだったでしょうか。
便利になったものばかりを使うことは効率がいいですが、
そうなると裏で実際に動いている大事なことを見落としがちです。
処理がブラックボックス化されているが故ですね。
ただ分かればなんてことはありません。
ぜひ不便をもっと体験して、その上で便利を体験してみてください。
よりそのありがたみがわかり、理解が深まるかと思います。