zsh compinit: insecure directories, run compaudit for list解決辦法

2022年1月12日16:40:13 發(fā)表評(píng)論 5,629 ℃

最近在使用zsh,添加自動(dòng)補(bǔ)全功能以后,切換zsh或者啟動(dòng)zsh終端的時(shí)候,總是提示:

zsh compinit: insecure directories, run compaudit for list解決辦法

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

導(dǎo)致每次都要手動(dòng)確認(rèn)一次,非常麻煩。

為什么會(huì)導(dǎo)致每次提示這個(gè)呢?

主要是因?yàn)榘惭b完zsh-completions以后,在.zshrc文件添加了下面代碼:

if type brew &>/dev/null; then
  FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
  autoload -Uz compinit
  compinit
fi

是什么原因會(huì)提示目錄不安全呢?

man zshcompsys揭示了有關(guān)安全檢查的以下內(nèi)容:

出于安全原因,compinit 還會(huì)檢查完成系統(tǒng)是否會(huì)使用不屬于 root 或當(dāng)前用戶的文件,或者是全局或組可寫目錄中的文件,或者不屬于 root 或當(dāng)前用戶的文件。如果找到這樣的文件或目錄,compinit 將詢問(wèn)是否真的應(yīng)該使用完成系統(tǒng)。要避免這些測(cè)試并使所有找到的文件無(wú)需詢問(wèn)即可使用,請(qǐng)使用選項(xiàng) -u,并讓 compinit 靜默忽略所有不安全的文件和目錄,請(qǐng)使用選項(xiàng) -i。當(dāng)給出 -C 選項(xiàng)時(shí),此安全檢查將完全跳過(guò)。

可以通過(guò)運(yùn)行函數(shù) compaudit 隨時(shí)重試安全檢查。

運(yùn)行compaudit命令返回不安全的目錄:

There are insecure directories:
/usr/local/share

解決方案就是去掉這些不安全目錄屬組的寫入權(quán)限:

compaudit | xargs chmod g-w

也可以單個(gè)文件夾刪除權(quán)限:

sudo chmod g-w /usr/local/share/zsh

執(zhí)行以后再打開(kāi)終端測(cè)試正常:

zsh compinit: insecure directories, run compaudit for list解決辦法

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫(kù)、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: