【问题标题】:Why doesn't kubectl bash completion work on macOS/OS X?为什么 kubectl bash 补全在 macOS/OS X 上不起作用?
【发布时间】:2017-07-21 15:00:21
【问题描述】:

我按照kubectl completion -h 给出的安装 Bash 补全的说明进行操作:

  1. 我通过 Homebrew 安装了 bash-completion
  2. 在我的~/.bashrc 中,我首先获取bash-completion,然后从完成kubectl 子命令输出:
    • source $(brew --prefix)/etc/bash_completion
    • source <(kubectl completion bash)

有了这些,我启动了一个新的 shell,但完成不起作用。如何让它工作?

【问题讨论】:

    标签: bash kubernetes homebrew bash-completion kubectl


    【解决方案1】:

    一旦 Homebrew 安装了 bash-completion,它的完成似乎 需要居住在$(brew --prefix)/etc/bash_completion.d。在那里你会发现很多捆绑在一起的其他完成。添加 kubectl 的补全:

    $ kubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl
    

    这对我有用。

    【讨论】:

      【解决方案2】:

      我是 Ahmet B 的答案,修复程序说要将以下内容添加到您的 .bashrc 文件中:

      export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
      [[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
      

      但是,完成 2 的安装:

      brew install bash-completion@2
      

      如果您想使用 V1 完成,则以添加导出行的消息结尾。删除该导出为我启用了 kubectl 完成。

      【讨论】:

        【解决方案3】:

        请参阅 kubectl 文档的“在 macOS 上,使用 bash”部分:https://kubernetes.io/docs/tasks/tools/install-kubectl/#on-macos-using-bash 我最近贡献了这些,所以它们应该是最新的。如果没有,请发送拉取请求来修复它。

        还有:https://blog.fabric8.io/enable-bash-completion-for-kubernetes-with-kubectl-506bc89fe79e

        【讨论】:

          【解决方案4】:
          1. brew install bash-completion 之后,要真正启用 bash 补全,您需要:
            source /usr/local/etc/profile.d/bash_completion.sh
            
            将该行添加给您bashrc
          2. 然后您可以:
            source <(kubectl completion bash)
            

          【讨论】:

            【解决方案5】:

            以上答案对我不起作用,但我发现this解决方案:

            source /dev/stdin <<<"$(kubectl completion bash)"
            

            【讨论】:

              【解决方案6】:

              这是另一种方法:

              安装 bash 和 bash-completion

              brew install bash bash-completion
              

              设置终端使用 bash

              Preferences > General > Shell open with: Command (complete path):

              /opt/homebrew/bin/bash
              

              检查 bash-completion 已安装到的位置

              brew info bash-completion
              

              Bash 补全已安装到: /opt/homebrew/etc/bash_completion.d

              编辑 ~/.bashrc

              alias k="kubectl"
              complete -F __start_kubectl k
              source /opt/homebrew/etc/profile.d/bash_completion.sh
              source <(kubectl completion bash)
              

              重新加载终端并验证完成工作

              ~$ k <TAB>
              

              alpha auth cordon diff 获取补丁运行版本 注释自动缩放cp ...

              环境

              • macOS 蒙特雷 12.2.1
              • 自制 3.3.15
              • GNU bash,版本 5.1.16(1)-release (aarch64-apple-darwin21.1.0)
              • bash 完成:稳定 1.3(瓶装)
              • kubectl v1.23.3

              【讨论】:

                猜你喜欢
                • 2010-09-05
                • 2012-02-19
                • 2014-12-15
                • 1970-01-01
                • 2014-10-19
                • 1970-01-01
                • 2012-06-26
                • 2015-01-16
                • 2015-06-15
                相关资源
                最近更新 更多