はじめに
みなさん、こんにちは。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
も実行できなくなったというのが今回のオチです。
終わりに
いかがだったでしょうか。
便利になったものばかりを使うことは効率がいいですが、
そうなると裏で実際に動いている大事なことを見落としがちです。
処理がブラックボックス化されているが故ですね。
ただ分かればなんてことはありません。
ぜひ不便をもっと体験して、その上で便利を体験してみてください。
よりそのありがたみがわかり、理解が深まるかと思います。