zshでzsh compinit: insecure directoriesを解決する

programing

macのターミナルを開いたら突然以下のメッセージが出た。

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

[y]を押してほっておいても良いがメッセージが出ないようにする。

原因

安全ではないディレクトリがあるらしい。

シェル補完を実行するためのファイルのパーミッションが適切でない時に警告として出るらしい。

解決する

compaudit

メッセージにある通りcompauditコマンドを実行してみる

% compaudit
%

何も表示されない…

$fpathのディレクトリ権限をチェック

ls -ld $fpathで権限を確認する

% ls -ld $fpath
ls: /usr/local/share/zsh/site-functions: No such file or directory
drwxrwxr-x    10 satoshi  admin    320 11 14 14:10 /opt/homebrew/share/zsh/site-functions

権限がおかしかったため権限を修正する

% sudo chmod -R 755 /opt/homebrew/share/zsh/site-functions
% sudo chown -R root:wheel /opt/homebrew/share/zsh/site-functions

Zshの再インストール

brew reinstall zsh

権限がおかしくて書き込みができないと言われて、表示されたコマンドの通り権限を修正する

再度compaudit

% compaudit
There are insecure directories:
/opt/homebrew/share/zsh

原因がついに出てきた!権限を修正する

% sudo chmod -R 755 /opt/homebrew/share/zsh

解決した!

まとめ

おそらく /opt/homebrew/share/zsh/site-functions/opt/homebrew/share/zsh/site-functionsの権限がよくなかった。

最初のcompauditコマンドで原因が表示されなかったのはcompauditコマンドが壊れていたからで再インストールしたら原因が表示されるようになった。

終わりに

ChatGPTに課金して聞いたらすべて解決してくれた!(無課金だと解決してくれなかった)

コメント

タイトルとURLをコピーしました