Torihaji's Growth Diary

Little by little, no hurry.

vscode からcode コマンドが実行できるようになるまで

はじめに

みなさん、こんにちは。torihaziです

先ほど、vscodecmd 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も実行できなくなったというのが今回のオチです。

参考にしたサイト

終わりに

いかがだったでしょうか。

便利になったものばかりを使うことは効率がいいですが、

そうなると裏で実際に動いている大事なことを見落としがちです。

処理がブラックボックス化されているが故ですね。

ただ分かればなんてことはありません。

ぜひ不便をもっと体験して、その上で便利を体験してみてください。

よりそのありがたみがわかり、理解が深まるかと思います。