วิธีแก้ zsh compinit: ปัญหาไดเร็กทอรีที่ไม่ปลอดภัยบน MacOS (โซลูชันอื่นล้มเหลว)

Dec 29 2020

ฉันทราบว่ามีคำถามนี้หลายฉบับที่นี่ แต่คำตอบทั้งหมดแนะนำให้เพิ่ม

ZSH_DISABLE_COMPFIX="true"

ไปที่ด้านบนสุดของไฟล์ ~ / .zshrc ของฉัน ฉันได้ทำสิ่งนี้และทุกครั้งที่ฉันเปิด zsh ฉันได้รับการต้อนรับด้วย

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

ดูเหมือนว่าคนอื่นที่ถามคำถามนี้จะไม่มีเครื่องหมายคำพูดที่เป็นจริงในตัวอย่างแรก แต่ฉันได้เพิ่มสิ่งนั้นเข้าไป ฉันยังเรียกใช้ source ~ / .zshrc ซึ่งเท่าที่ฉันสามารถบอกได้ว่าโหลดการกำหนดค่า zshrc ซ้ำ สิ่งนี้ยังคงให้คำเตือนข้างต้นแก่ฉัน ฉันไม่แน่ใจว่ารายละเอียดเหล่านี้อาจเกี่ยวข้องหรือไม่ แต่ฉันจะรวมไว้:

  • นี่คือการติดตั้ง zsh ใหม่บน M1 Macbook ที่ใช้ Big Sur
  • ฉันยังติดตั้ง Oh My Zsh ไว้ที่ด้านบนของ zsh ด้วย
  • ก่อนหน้านี้ฉันใช้คำสั่งส่งออกหลายคำสั่งเพื่อตั้งค่าไดเรกทอรี nvm ของฉัน แต่ฉันไม่คิดว่าจะเกี่ยวข้อง

มีความคิดอย่างไรในการแก้ไขปัญหาการอนุญาตนี้ ขอบคุณ

แก้ไข:

ผลตอบแทนเปรียบเทียบ

/usr/local/share/zsh/site-functions
/usr/local/share/zsh

นอกจากนี้นี่คือรายการที่ไม่เป็นมาตรฐานอื่น ๆ ในไฟล์ ~ / .zshrc ของฉัน (ตามลำดับ แต่มีบางสิ่งในตัวอยู่ระหว่างนั้น):

ZSH_DISABLE_COMPFIX="true"
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh export PATH="/usr/local/opt/icu4c/bin:$PATH"
export PATH="/usr/local/opt/icu4c/sbin:$PATH" export PATH=$HOME/bin:/usr/local/bin:$PATH plugins=(git) source $ZSH/oh-my-zsh.sh
zstyle :compinstall filename '/Users/jonahsaltzman/.zshrc'
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
autoload -Uz compinit
compinit

คำตอบ

3 MarlonRichert Dec 29 2020 at 15:44

ปัญหาคือคุณใช้งานcompinitTWICE: เมื่อผ่าน Oh-My-Zsh และอีกครั้งด้วยตนเอง $ZSH_DISABLE_COMPFIXเฉพาะสำหรับ Oh-My-Zsh เท่านั้นและไม่ได้ใช้compinitเอง ดังนั้นเมื่อคุณวิ่งcompinitเป็นครั้งที่สองมันก็ยังคงบ่นไม่ว่ามูลค่าของ$ZSH_DISABLE_COMPFIX.

ดังนั้นหากคุณต้องการกำจัดคำเตือนเพียงแค่ลบ 3 บรรทัดล่างสุดออกจาก.zshrcไฟล์ของคุณ

อย่างไรก็ตาม compinitไม่ได้แสดงคำเตือนนั้นเพื่ออะไร แทนที่จะระงับคุณอาจต้องการทำchmod g-w,o-wในไดเรกทอรีที่แสดงรายการโดยcompaudit.