Как узнать, почему не работает скрипт автозаполнения Kubectl ZSH? - PullRequest
0 голосов
/ 04 октября 2019

Я работаю на 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

1 Ответ

1 голос
/ 07 октября 2019

Имейте в виду, что следующая команда:

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

илилюбая другая часть сценария, которая вам нравится.

Трудно догадаться, что может быть не так в вашем конкретном случае, но вы можете легко отладить сценарий . Просто для целей отладки вы можете попробовать запустить его как любой другой скрипт оболочки. Если при поиске сценария возникнут какие-либо ошибки (в основном это , запускающий его в текущей оболочке ), вы увидите эти ошибки также при запуске его в новой оболочке , которая, конечно,не повлияет на среду вашей запущенной оболочки, но сообщит вам, в чем может быть проблема.

Чтобы включить режим отладки, вам нужно использовать флаг -x (или -xv для подробного вывода):

zsh -x kubectl-autocompletion-script

Это должно сказать вам, где находится проблема.

Еще одна вещь: В качестве альтернативы добавлению source <(kubectl completion zsh) к вашему ~/.zshrc вы можете захотетьпоместите скрипт в /etc/zsh/zshrc.d/, который в основном делает то же самое, но глобально, для всех пользователей.

...