VS Codeの「permission denied, unlink 'usr/local/bin/code'」エラー解決法
問題の説明
macOSでVisual Studio Codeを使用している際、Shell Command: Install 'code' command
を実行してコマンドラインからVS Codeを開けるように設定しても、次の問題が発生することがあります:
- ターミナルで
code
コマンドを実行すると「zsh: command not found: code」と表示される - VS Code内で再度
Shell Command: Install 'code' command
を実行しようとすると「EACCES: permission denied, unlink 'usr/local/bin/code'」というエラーが表示される
この問題は、/usr/local/bin/
ディレクトリへのアクセス権限が適切に設定されていない場合に発生します。
根本的な原因
macOSでは、特にM1/M2/M3チップ搭載のMacで、/usr/local/bin/
ディレクトリの所有権がrootユーザーに設定されていることがあります。VS Codeがこのディレクトリに code
コマンドをインストールまたは更新しようとすると、権限不足のために操作が拒否されます。
解決方法
方法1: 権限設定の修正(推奨)
最も確実な解決方法は、/usr/local/bin
ディレクトリの所有権を現在のユーザーに変更することです。
# 現在のユーザー名で権限を変更
sudo chown -R $USER /usr/local/bin
# または明示的にユーザー名を指定
sudo chown -R your_username /usr/local/bin
変更後、VS Codeで再度コマンドをインストールします:
- VS Codeで
cmd + shift + p
を押してコマンドパレットを開く - 「Shell Command: Install 'code' command in PATH」を検索して実行
- ターミナルで
code .
を実行して動作確認
WARNING
sudo chown
コマンドはシステムの重要なディレクトリの権限を変更するため、慎重に実行してください。誤ったディレクトリに対する権限変更はシステムに悪影響を及ぼす可能性があります。
方法2: コマンドの再インストール
権限問題が一時的な場合、単純な再インストールで解決することがあります。
- VS Codeで
cmd + shift + p
を押してコマンドパレットを開く - 「Shell Command: Uninstall 'code' command from PATH」を検索して実行
- 再度コマンドパレットを開き、「Shell Command: Install 'code' command in PATH」を実行
- ターミナルで
code .
を実行して動作確認
方法3: PATH設定の確認
シェルの設定ファイルにPATHが正しく設定されているか確認します。
# ZSHを使用している場合
export PATH="/usr/local/bin:$PATH"
# Bashを使用している場合
export PATH="/usr/local/bin:$PATH"
変更後、設定を反映させます:
source ~/.zshrc # または source ~/.bash_profile
方法4: 代替コマンドの設定
権限変更が不可能な環境では、関数として code
コマンドを定義することもできます。
# 関数としてcodeコマンドを定義
code () {
VSCODE_CWD="$PWD" open -n -b "com.microsoft.VSCode" --args $*
}
予防策
- 定期的な権限確認: 定期的に
/usr/local/bin
の権限状態を確認する - VS Codeの更新: 最新版のVS Codeを使用することで、既知の権限問題が修正されている可能性があります
- 適切なインストール方法: 公式のインストーラーを使用してVS Codeをインストールする
まとめ
VS Codeの「permission denied, unlink 'usr/local/bin/code'」エラーは、主に権限問題によって発生します。最も効果的な解決法は sudo chown -R $USER /usr/local/bin
コマンドでディレクトリの所有権を変更することです。これで問題が解決しない場合は、コマンドの再インストールやPATH設定の確認を行うことをおすすめします。
INFO
この問題は特にAppleシリコン搭載のMac(M1/M2/M3)で頻繁に報告されています。VS CodeやmacOSの更新により解決される可能性もありますが、現時点では上記の解決方法が有効です。