ubuntu - 如何找出 Kubectl ZSH 自动完成脚本失败的原因?
问题描述
我在 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
解决方案
请记住以下命令:
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 中运行它),当您在新 shell中运行它时也会看到这些错误,这当然不会影响当前运行 shell 的环境,但会告诉你可能是什么问题。
要打开调试模式,您需要使用-x
标志(或-xv
用于详细输出):
zsh -x kubectl-autocompletion-script
这应该告诉您问题出在哪里。
还有一件事:作为添加source <(kubectl completion zsh)
到您的替代方案,~/.zshrc
您可能希望将脚本放置在/etc/zsh/zshrc.d/
其中基本上对所有用户执行相同但全局的操作。
推荐阅读
- javascript - 我是对的,从对象中破坏对象不会创建新对象
- sabre - Sabre 刷新会话 - OTA_PingRQ 响应显示版本无效
- javascript - 输入选择变量
- java - 返回一个锯齿形数组
- python - 在烧瓶资产(网络资产)中编写自定义过滤器
- javascript - JS:使用reduce方法编写连接函数...函数的console.log返回不正确的输出
- machine-learning - 用于音频识别的 CNN 具有近乎完美的测试和验证准确性,但不能推广到新数据
- sap - 在 MTA XSA 应用程序中共享 HDI 容器
- c++14 - 如何在 C++14 中为 WebAssembly 创建图形,其实现类似于 X11?
- wordpress - 这是什么意思:require_once():打开失败需要'../../wp-includes/pluggable.php'(include_path='.:/opt/php71/lib/php')