題:
我的命令行說`complete:13:找不到命令:compdef`
aaron
2017-08-27 05:07:53 UTC
view on stackexchange narkive permalink

當我使用iTerm或Hyper之類的終端時,剛啟動時,我收到的第一條消息是:

  complete:13:找不到命令:compdef
 

我不知道這是從哪裡來的,以及如何擺脫它。但是,此消息不會顯示在默認終端應用程序上。

我正在使用zsh。

我們可以假設您的$ SHELL是`bash`嗎?
檢查您的〜/ .bashrc和〜/ .bash_profile
@Sairam那些也應該在普通的終端應用程序中加載。[我會看一下。](https://apple.stackexchange.com/questions/115598/how-to-set-an-iterm2-startup-command)
我投票結束,因為無論如何從這個問題都無法猜出接受的答案。即沒有提到zsh作為外殼。我看不到這個問題如何幫助其他用戶。答案涵蓋了許多不同的問題,因為問題是如此的糟糕。
@Mark我同意這個問題可能需要一些工作。但是實際上提到了“ zsh”,並且任何搜索錯誤消息的人都可以從答案中學到一些東西。
五 答案:
GOPESH CHAUDHARY
2018-10-26 12:39:06 UTC
view on stackexchange narkive permalink

這是我在Mac OS上遇到的相同問題。我正在使用zsh shell。

Zsh Compdef error

Compdef基本上是zsh用來加載自動完成功能的函數。完成系統需要激活。如果您使用的是類似oh-my-zsh的東西,則已經解決了這個問題,否則您需要在〜/ .zshrc

中添加以下內容
 自動加載-Uz compinit
compinit
 

可以直接使用compdef函數手動註冊完成功能,例如compdef。但是在使用compdef之前,需要在上下文中自動加載compinit。

我必須將其放在文件的開頭,然後退出,然後才能起作用。謝謝。
aaron
2017-08-27 16:43:06 UTC
view on stackexchange narkive permalink

經過更多研究,我找到了答案。我的.zprofile中有一個塊:

  export NVM_DIR =“ / Users / Aaron / .nvm”
[-s“ $ NVM_DIR / nvm.sh”] && \。“ $ NVM_DIR / nvm.sh”#這將加載nvm
[-s“ $ NVM_DIR / bash_completion”] && \。“ $ NVM_DIR / bash_completion”
 

最後一行加載compdef。但是這樣做時會引起某種衝突。我需要做的就是註釋掉:

 #[-s“ $ NVM_DIR / bash_completion”] && \。“ $ NVM_DIR / bash_completion”
 

煩人的錯誤消失了。最好的部分是:我仍然有zsh選項卡補全。

LаngLаngС
2017-08-27 15:16:26 UTC
view on stackexchange narkive permalink

這取決於您為系統,終端,iTerm設置的默認(登錄)shell的內容。安裝並設置為在其中之一中執行的更新的 bash 會產生不同的結果。

此錯誤來自您安裝的所謂的點文件。這些文件的前面有一個點(因此稱為名稱),例如 .bashrc 。這意味著它們對於Finder和簡單的 ls 不可見。 當外殼啟動時,有關的點文件將被您的外殼讀取。它們包含說明,設置,自定義;也許是一些程序代碼片段。

不是您的用戶主目錄中的所有點文件都可以被外殼讀取。 bash讀取的內容可能包括: .bash_history .bash_profile .bash_prompt .bash_sessions .bashrc .editorconfig .exports .functions .inputrc .profile (此列表並不詳盡)

這些文件可能是由您創建,由您或由某些程序(如Fink,自製程序或端口)操縱的。 您可能剛剛從網上複製了這些文件,以“升級” /個性化您的shell。

無論您如何看待當前情況。從另一個用戶打開您的終端機/ iTerm,可能不會出現該症狀。

這意味著:所有這些文件在某種意義上都可以“安全刪除”:從某種意義上說,它們對於運行終端機或外殼程序不是必需的。如果這些文件確實包含您可能在日常工作中依賴的個性化設置,請對其進行備份。這樣的示例包括對 $ PATH 變量的添加。沒有這些,您可能會發現像芬克這樣的程序不再起作用。

但是,您發布的實際錯誤消息表明兩件事:

  • 點文件的組合內容無法完成它們應做的工作。更確切地說:一條指令(compdef)被調用,並且不可用。

  • 您很可能從網絡上的源中獲取了許多點文件,例如 holman-dotfiles。 其中包括一個錯誤消息完全相同的錯誤。

因此,您應該瀏覽當前用戶的所有點文件,並僅保留必要時識別的內容(記住備份)。然後,您可以再次使用來源中的更新文件。但是請記住,這些都是“全面的”。最好不要盲目使用它們,而要測試並選擇所有這些選項的子集。

盲目或不加選擇地使用它們不僅可能導致提示該問題的問題,而且還會導致遵循其他方法或故障排除建議時出現的問題。

更新: 該問題的答案是先前版本的,該版本未將zsh指示為所使用的shell。->將zsh替換為您在上面閱讀bash的地方。

jersey bean
2020-01-28 04:50:37 UTC
view on stackexchange narkive permalink

我也收到了這個錯誤,但是我有一個不同的解決方案。

我的.zshrc文件具有以下內容:

 #設置Kubectl完成
如果[/ usr / local / bin / kubectl];然後來源<(kubectl完成zsh);科幻

#下一行為gcloud啟用Shell命令完成。
如果[-f'/Users/my-user-name/google-cloud-sdk/completion.zsh.inc'];然後 。'/Users/my-user-name/google-cloud-sdk/completion.zsh.inc';科幻
 

在執行complete.zsh.inc腳本之後,我需要放置kubectl完成部分:

 #下一行為gcloud啟用Shell命令完成。
如果[-f'/Users/my-user-name/google-cloud-sdk/completion.zsh.inc'];然後 。'/Users/my-user-name/google-cloud-sdk/completion.zsh.inc';科幻

#設置Kubectl完成
如果[/ usr / local / bin / kubectl];然後來源<(kubectl完成zsh);科幻
 
xiaojueguan
2020-07-19 09:20:50 UTC
view on stackexchange narkive permalink

您應該在下面添加

 自動加載-Uz compinit
compinit -i
 

在錯誤消息的原因行上方



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...