Dòng lệnh của tôi nói `hoàn thành: 13: lệnh không tìm thấy: compdef`


5

Khi tôi sử dụng một thiết bị đầu cuối như iTerm hoặc Hyper, ngay khi tôi khởi động nó, thông điệp đầu tiên tôi nhận được là:

complete:13: command not found: compdef

Tôi không biết đây là từ đâu và làm thế nào để thoát khỏi nó. Thông báo này không hiển thị trên ứng dụng thiết bị đầu cuối mặc định.

Tôi đang sử dụng zsh.


Chúng tôi có thể giả sử $ SHELL của bạn bashkhông?
bmike

1
kiểm tra ~ / .bashrc và ~ / .bash_profile
Sairam

@Sairam Những người đó cũng nên tải lên trong ứng dụng Terminal bình thường. Tôi sẽ xem cái này
JMY1000

Tôi bỏ phiếu để đóng vì câu trả lời được chấp nhận không thể đoán được n từ câu hỏi. tức là không đề cập đến zsh như vỏ. Tôi không thấy câu hỏi này giúp người dùng khác như thế nào. Các câu trả lời bao gồm nhiều điều khác nhau vì câu hỏi rất kém.
Đánh dấu

1
@Mark Tôi đồng ý rằng câu hỏi có thể cần một số công việc. Nhưng zshthực sự được đề cập, và bất kỳ ai đang tìm kiếm thông báo lỗi có thể học được điều gì đó từ câu trả lời.
nohillside

Câu trả lời:


5

Sau khi nghiên cứu thêm, tôi đã tìm thấy câu trả lời của mình. Có một khối trong .zprofile của tôi:

export NVM_DIR="/Users/Aaron/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

Dòng cuối cùng tải compdef. Nhưng khi làm điều này nó gây ra một số xung đột. Tất cả những gì tôi cần làm là bình luận:

# [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

Và lỗi khó chịu đã biến mất. Và phần tốt nhất: Tôi vẫn hoàn thành tab zsh.


5

Đây là vấn đề tương tự tôi gặp phải trên hệ điều hành mac. Tôi đang sử dụng vỏ zsh.

Lỗi Zsh Compdef

Compdef về cơ bản là một hàm được zsh sử dụng để tải các phần tự động hoàn thành. Hệ thống hoàn thành cần phải được kích hoạt. Nếu bạn đang sử dụng một cái gì đó như oh-my-zsh thì việc này đã được xử lý, nếu không, bạn sẽ cần thêm phần sau vào ~ / .zshrc của mình

autoload -Uz compinit
compinit

Các chức năng hoàn thành có thể được đăng ký thủ công bằng cách sử dụng hàm compdef trực tiếp như compdef này. Nhưng compinit cần phải được tự động tải trong ngữ cảnh trước khi sử dụng compdef.


0

Nó phụ thuộc vào những gì bạn đặt làm vỏ (login-) mặc định cho hệ thống, cho Terminal, cho iTerm. Cập nhật bashcài đặt và thiết lập để thực thi trong một trong số họ cho kết quả khác nhau.

Lỗi này xuất phát từ cái gọi là tệp chấm bạn đã cài đặt. Đây là những tập tin có dấu chấm ở phía trước (vì thế tên) như thế nào .bashrc. Điều đó có nghĩa là chúng vô hình với Finder và đơn giản ls. Các tệp chấm trong câu hỏi được đọc bởi shell của bạn khi nó khởi động. Chúng chứa các hướng dẫn, cài đặt, tùy chỉnh; có thể ít đoạn mã chương trình.

Không phải tất cả các tệp chấm trong thư mục nhà người dùng của bạn đều được đọc bởi trình bao. Những người đọc bằng bash có thể bao gồm: .bash_history .bash_profile .bash_prompt .bash_sessions .bashrc .editorconfig .exports .functions .inputrc .profile(Danh sách này không đầy đủ)

Những tệp đó có thể do bạn tạo, do bạn thao tác hoặc bởi một số chương trình nhất định như fink, homebrew hoặc cổng. Bạn có thể vừa sao chép chúng từ mạng để "nâng cấp" / cá nhân hóa vỏ của bạn.

Bất kể bạn đến tình huống hiện tại như thế nào. Mở Terminal / iTerm của bạn từ một người dùng khác và các triệu chứng có thể sẽ không được quan sát.

Điều đó có nghĩa là: tất cả các tệp đó theo nghĩa 'an toàn để xóa': theo nghĩa là chúng không cần thiết để chạy Terminal hoặc shell của bạn. Tạo một bản sao lưu của những cái đó trong trường hợp chúng thực sự chứa các cài đặt được cá nhân hóa mà bạn có thể phụ thuộc vào công việc hàng ngày. Ví dụ cho điều đó bao gồm bổ sung cho các $PATHbiến của bạn . Không có những cái đó bạn có thể thấy các chương trình như fink không còn hoạt động.

Tuy nhiên, thông báo lỗi thực tế bạn đã đăng cho biết hai điều:

  • Nội dung kết hợp của các tệp chấm của bạn không hoạt động để thực hiện những gì chúng phải làm. Chính xác hơn: một lệnh (compdef) đã được gọi và điều đó không có sẵn.

  • Rằng bạn rất có thể đã lấy một loạt các tệp chấm từ một nguồn trên mạng như holman-dotfiles . Chúng bao gồm một lỗi có cùng thông báo lỗi.

Vì vậy, bạn nên xem qua tất cả các tệp chấm cho người dùng hiện tại của mình và chỉ giữ lại những thứ bạn nhận ra khi cần thiết (hãy nhớ các bản sao lưu). Sau đó, bạn có thể sử dụng các tệp được cập nhật từ nguồn của bạn một lần nữa. Nhưng hãy nhớ rằng những thứ này khá 'toàn diện'. Sẽ là khôn ngoan khi không sử dụng tất cả chúng một cách mù quáng và thực sự kiểm tra và chọn một tập hợp con của tất cả các tùy chọn đó.

Sử dụng tất cả chúng một cách mù quáng hoặc bừa bãi có thể không chỉ dẫn đến các vấn đề như câu hỏi gây ra câu hỏi này mà còn khi làm theo các hướng dẫn khác hoặc tư vấn khắc phục sự cố.

Cập nhật: Câu trả lời này đã được đưa ra cho phiên bản trước của câu hỏi không chỉ ra zsh là vỏ được sử dụng. -> Thay thế zsh nơi bạn đọc bash ở trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.