ฟังก์ชั่นเติมเต็ม ZSH ใช้งานไม่ได้


4

การติดตั้ง oh-my-zsh ของฉันซึ่งใช้งานมาเกือบปีแล้วเพิ่งจะพัง เมื่อฉันเปิดเทอร์มินัลฉันจะได้รับ:

/home/marcel/.oh-my-zsh/lib/theme-and-appearance.zsh:2: colors: function definition file not found
/home/marcel/.oh-my-zsh/oh-my-zsh.sh:78: compinit: function definition file not found
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:80: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:93: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:100: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:109: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:119: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:129: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:138: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:144: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:147: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:150: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:153: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:163: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:166: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:168: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:182: command not found: compdef
/home/marcel/.oh-my-zsh/plugins/git/git.plugin.zsh:193: command not found: compdef
$SPACESHIP_PROMPT_TRUNC is deprecated. Use $SPACESHIP_DIR_TRUNC instead.
spaceship_setup:3: add-zsh-hook: function definition file not found
spaceship_setup:4: add-zsh-hook: function definition file not found
$SPACESHIP_PROMPT_TRUNC is deprecated. Use $SPACESHIP_DIR_TRUNC instead.
spaceship_setup:3: add-zsh-hook: function definition file not found
spaceship_setup:4: add-zsh-hook: function definition file not found

ผมได้มองไปรอบ ๆ และจำนวนมากของคำตอบอื่น ๆ compauditขอแนะนำให้ทำงาน zsh: compaudit: function definition file not foundทำงานนี้ให้ฉัน

สิ่งที่ฉันได้ลอง:

  1. rm ~/.zcompdump*
  2. กำลังติดตั้ง oh-my-zsh อีกครั้ง
  3. การติดตั้ง zsh จากแหล่งที่มาอีกครั้ง
  4. กำลังเพิ่ม/usr/share/zsh/functionsไปยัง$fpath
  5. chown -R 755 /usr/share/zsh/functions
  6. กำลังโหลดและวิ่งcompauditภายในzsh -f

สภาพแวดล้อมของฉัน:

  • uname -a: Linux Hermes 4.11.6-1-ARCH #1 SMP PREEMPT Sat Jun 17 08:19:42 CEST 2017 x86_64 GNU/Linux
  • zsh --version: zsh 5.3.1 (x86_64-unknown-linux-gnu)
  • which zsh: /usr/local/bin/zsh

แก้ไข:

ฉันยืนยันว่าเป็นปัญหาสิทธิ์ ถ้าฉันทำ

sudo zsh -f
autoload -U compaudit
compaudit

คำสั่งทำงานตามที่คาดไว้ ฉันทำแล้ว

sudo chmod 777 /usr/share/zsh/ -R # Just for testing I promise

และฉันยังคงมีเมื่อทำงานzsh: compaudit: function definition file not foundcompaudit

ฉันก็ลอง

sudo chown user:users /usr/share/zsh/ -R

และมันก็ยังไม่ทำงาน หากไฟล์เหล่านี้ทั้งหมดเป็นของผู้ใช้ของฉันและเป็น 777 อย่างไร zsh ทำงานเป็นรูทและไม่เป็นผู้ใช้ของฉันได้อย่างไร


มันคือ $ FPATH ของฉัน ฉันควรจะรู้. ฉันพยายามเพิ่มสิ่งต่าง ๆ ลงไป แต่ฉันคิดว่าฉันเพิ่มสิ่งที่ผิด ฉันเพิ่งคัดลอกมาจากรูทเพราะรากทำงานได้ดีและตอนนี้ทุกอย่างสมบูรณ์แบบ ขอบคุณมาก!
Marcel

เขียนคำตอบที่ดีกว่านี้แล้วฉันจะมอบรางวัลให้คุณ
Marcel

คำตอบ:


4

ตามเบาะแสในปัญหาการติดตั้งด้วยสี compinit และ git plugin # 4757ดูเหมือนว่าการตรวจสอบ " เนื้อหาตัวแปร $ FPATH " มีเส้นทางที่ถูกต้องสำหรับที่คุณติดตั้งฟังก์ชั่นจะช่วยแก้ปัญหาได้

นอกจากนี้การคัดลอกเนื้อหา zsh ไปยังตำแหน่งเช่นรูทหรือเส้นทางที่กำหนดไว้แล้ว$FPathอาจช่วยแก้ปัญหานี้ได้เช่นกัน

สิ่งแรกที่ต้องทำคือตรวจสอบเนื้อหาตัวแปร FPATH ของคุณ: echo $ FPATH /home/charmander/.oh-my-zsh/plugins/git:/home/charmander/.oh-my-zsh/functions:/home/charmander/.oh-my-zsh/completions:/home/charmander/.oh-my-zsh/plugins/python:/home/charmander/.oh-my-zsh/plugins/pip:/home/charmander/.oh-my-zsh/plugins/git:/home/charmander/.oh-my-zsh/functions:/home/charmander/.oh-my-zsh/completions:/usr/share/zsh/site-functions:/usr/share/zsh/5.0.2/functionsในสถานการณ์ปกติกลับสิ่งที่ต้องการ:

ในกรณีของฉันมันกลับมา: /opt/intel/composer_xe_2011_sp1.7.256/mkl/include. เมื่อฉันพยายามที่จะเอา .oh-My-zsh และเรียกใช้เพียง zsh /usr/share/zsh/5.0.2/scripts/newuser:6: zsh-newuser-install: function definition file not foundกลับนี้: ค้นหาในเว็บฉันพบรายงานข้อผิดพลาดนี้: zsh: คำจำกัดความของฟังก์ชั่นหลายอย่างขาดหายไป zsh-newuser-install, compinit ฯลฯที่บอกว่ามันอาจมีตัวแปรเขียนทับโดยคอมไพเลอร์ของ Intel: /

ดังนั้นวิธีแก้ไขปัญหานี้อาจแทรกบรรทัดต่อไปนี้ใน. bash_profile ของคุณหากคุณไม่สามารถเรียกใช้คำสั่งนี้ chsh -s $ (zsh ใด)

FPATH=/home/modelagem/beatriz.fonseca/.oh-my-zsh/plugins/python:/home/modelagem/beatriz.fonseca/.oh-my-zsh/plugins/pip:/home/modelagem/beatriz.fonseca/.oh-my-zsh/plugins/git:/home/modelagem/beatriz.fonseca/.oh-my-zsh/functions:/home/modelagem/beatriz.fonseca/.oh-my-zsh/completions:/usr/share/zsh/site-functions:/usr/share/zsh/5.0.2/functions

export FPATH

แหล่ง

นอกจากนี้ตามคำใบ้จากสี: ไม่พบไฟล์คำจำกัดความของฟังก์ชั่น # 4607ปรากฏว่ามีคนอื่นแก้ไขปัญหานี้ด้วยการเพิ่ม$HOME/usr/share/zsh/'version of zsh'/functionsเพื่อแก้ปัญหานี้เช่นการติดตั้ง zsh ซึ่ง$HOME/usrอาจทำให้เกิดปัญหานี้ได้


อ่านเพิ่มเติม

   FPATH  The search path for function definitions.  The directories in this  path  are  searched
                 for  a  file  with the same name as the function or command when a function with the -u
                 attribute is referenced and when a command is not found.  If an  executable  file  with
                 the name of that command is found, then it is read and executed in the current environ-ment. environment.
                 ment.  Unlike PATH, the current directory must be represented explicitly by  .   rather
                 than by adjacent : characters or a beginning or ending :.

แหล่ง


9.1 ฟังก์ชั่นการโหลดอัตโนมัติ

ฟังก์ชั่นสามารถทำเครื่องหมายว่าไม่ได้กำหนดโดยใช้ autoload builtin (หรือ 'functions -u' หรือ 'typeset -fu') ฟังก์ชั่นดังกล่าวไม่มีร่างกาย เมื่อฟังก์ชันถูกเรียกใช้งานครั้งแรกเชลล์ค้นหานิยามโดยใช้องค์ประกอบของตัวแปร fpath

แหล่ง


2

ฉันแค่อยากจะเพิ่มข้อความสั้น ๆ ว่าข้อผิดพลาดนี้อาจเกิดขึ้นได้หากคุณมี ZSH รุ่นแยกต่างหากสองรุ่น ตรวจสอบให้แน่ใจว่าคุณไม่มีอะไรใน FPATH ของคุณที่จะเข้ากันไม่ได้กับ ZSH เวอร์ชันที่คุณใช้สำหรับเปลือกเข้าสู่ระบบจริงของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.