source <(kubectl completion bash) alias k="kubectl" alias kcontext="kubectl config use-context" kns() { if [[ $# -eq 0 ]]; then printf '%s\n' "$(kubectl config view --minify -o jsonpath='{.contexts[0].context.namespace}')" else local ns="${1?Namespace required}" kubectl config set-context --current --namespace "$ns" printf 'Switched current context to namespace: %s\n' "$ns" fi } _kns_completion() { local cur cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen -W "$(kubectl get namespaces -o name | sed 's|namespace/||')" -- "$cur") ) } _kcontext_completion() { local cur cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen -W "$(kubectl config get-contexts -o name)" -- $cur) ) } complete -F __start_kubectl k complete -F _kns_completion kns complete -F _kcontext_completion kcontext