【问题标题】:How to find out why Kubectl ZSH autocompletion script fails?如何找出 Kubectl ZSH 自动完成脚本失败的原因?
【发布时间】:2019-10-04 07:21:52
【问题描述】:

我在 Ubuntu 18.04 上运行并使用 zsh 而不是 bash。要完成 kubectl,它应该像添加

一样简单
source <(kubectl completion zsh)

到 ~/.zshrc 配置。我已经这样做了,但是 kubectl 自动完成功能不起作用。我已经多次重新加载终端。

将命令改为

source <(kubectl completion zsh) && echo success || echo failure

我在加载终端时看到“失败”。所以我的结论是脚本出了点问题。该脚本忽略了所有输出,所以我不知道到底出了什么问题。

有谁知道可能出了什么问题?或者可能是特定脚本所在的位置,所以我可以更改

_complete kubectl 2>/dev/null

_complete kubectl 2>~/logs.txt

【问题讨论】:

    标签: ubuntu zsh kubectl


    【解决方案1】:

    请记住以下命令:

    source <(kubectl completion zsh)
    

    只需获取命令的输出

    kubectl completion zsh
    

    生成 kubectl autocompletion script 并将其打印到标准输出。您可以简单地将其输出重定向到文件,而不是那样使用它:

    kubectl completion zsh > kubectl-autocompletion-script
    

    换行:

    _complete kubectl 2>/dev/null
    

    到:

    _complete kubectl 2>~/logs.txt
    

    或您喜欢的脚本的任何其他部分。

    很难猜测在您的特定情况下可能出了什么问题,但您可以轻松调试脚本。仅出于调试目的,您可以尝试将其作为任何其他 shell 脚本运行。如果在获取脚本时出现任何错误(基本上在当前 shell 中运行它),当你在 new shell 中运行它时也会看到这些错误当然不会影响您当前运行的 shell 的环境,但会告诉您可能是什么问题。

    要打开调试模式,您需要使用-x 标志(或-xv 用于详细输出):

    zsh -x kubectl-autocompletion-script
    

    这应该告诉你问题出在哪里。

    还有一件事:作为将source &lt;(kubectl completion zsh) 添加到~/.zshrc 的替代方法,您可能希望将脚本放在/etc/zsh/zshrc.d/ 中,这基本上对所有用户执行相同但全局性的操作。

    【讨论】:

      【解决方案2】:

      尝试在 .zshrc 文件的开头添加一行

      autoload -U +X compinit &amp;&amp; compinit

      【讨论】:

        猜你喜欢
        • 2010-11-22
        • 1970-01-01
        • 2011-08-23
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 2017-05-15
        • 2021-12-09
        • 2016-08-21
        相关资源
        最近更新 更多