如何找出 Kubectl ZSH 自动完成脚本失败的原因?
How to find out why Kubectl ZSH autocompletion script fails?
我 运行 在 Ubuntu 18.04 上使用 zsh 而不是 bash。要获得 kubectl 完成,它应该像添加
一样简单
source <(kubectl completion zsh)
到 ~/.zshrc 配置。我已经这样做了,但是 kubectl 自动完成功能不起作用。我已经多次重新加载终端。
将命令更改为
时
source <(kubectl completion zsh) && echo success || echo failure
我在加载终端时看到 "failure"。所以我的结论是脚本出了问题。该脚本消除了所有输出,所以我不知道到底出了什么问题。
有谁知道哪里出了问题?或者也许特定脚本所在的位置,所以我可以更改
_complete kubectl 2>/dev/null
至
_complete kubectl 2>~/logs.txt
请记住以下命令:
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 这当然不会影响你当前 运行ning shell 的环境,但会告诉你什么可能成为问题。
要打开调试模式,您需要使用 -x
标志(或 -xv
用于详细输出):
zsh -x kubectl-autocompletion-script
这应该会告诉您问题出在哪里。
还有一件事: 除了将 source <(kubectl completion zsh)
添加到 ~/.zshrc
之外,您可能希望将脚本放在 /etc/zsh/zshrc.d/
中,基本上对所有用户执行相同但全局的操作。
尝试在 .zshrc 文件的开头添加一行
autoload -U +X compinit && compinit
我 运行 在 Ubuntu 18.04 上使用 zsh 而不是 bash。要获得 kubectl 完成,它应该像添加
一样简单source <(kubectl completion zsh)
到 ~/.zshrc 配置。我已经这样做了,但是 kubectl 自动完成功能不起作用。我已经多次重新加载终端。
将命令更改为
时source <(kubectl completion zsh) && echo success || echo failure
我在加载终端时看到 "failure"。所以我的结论是脚本出了问题。该脚本消除了所有输出,所以我不知道到底出了什么问题。
有谁知道哪里出了问题?或者也许特定脚本所在的位置,所以我可以更改
_complete kubectl 2>/dev/null
至
_complete kubectl 2>~/logs.txt
请记住以下命令:
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 这当然不会影响你当前 运行ning shell 的环境,但会告诉你什么可能成为问题。
要打开调试模式,您需要使用 -x
标志(或 -xv
用于详细输出):
zsh -x kubectl-autocompletion-script
这应该会告诉您问题出在哪里。
还有一件事: 除了将 source <(kubectl completion zsh)
添加到 ~/.zshrc
之外,您可能希望将脚本放在 /etc/zsh/zshrc.d/
中,基本上对所有用户执行相同但全局的操作。
尝试在 .zshrc 文件的开头添加一行
autoload -U +X compinit && compinit