MacBook Sierra 10.13.3中kubectl执行触发段错误求助
可能的原因及排查方案
这种情况我碰到过好几次,大概率是系统执行的不是你刚安装的那个kubectl,下面给你拆解几个常见原因和验证修复方法:
1. PATH环境变量里有优先级更高的旧/损坏kubectl
当你直接敲kubectl时,系统会按PATH环境变量里的目录顺序,找第一个叫kubectl的可执行文件。如果你的PATH里某个目录(比如~/bin或者brew的某个路径)在/usr/local/bin前面,而那个目录里恰好有个损坏的kubectl,就会触发段错误。
验证方法:
which kubectl
如果输出不是/usr/local/bin/kubectl,那就是这个问题了。你可以删掉那个旧的kubectl,或者调整PATH把/usr/local/bin移到路径列表的前面。
2. Shell的命令缓存搞鬼
像zsh、bash这类shell会缓存命令的路径,避免每次都遍历PATH。如果之前你在其他位置装过kubectl,shell缓存还记着旧路径,即使你把新kubectl放到了/usr/local/bin,它还是会去旧路径找那个损坏的文件。
验证&修复方法:
- zsh用户执行:
rehash
- bash用户执行:
hash -r
之后再直接敲kubectl试试。
3. 不小心设置了kubectl别名
有可能你之前给kubectl设过别名,指向了错误的命令或者路径。验证方法:
alias kubectl
如果输出不是kubectl=/usr/local/bin/kubectl(或者直接提示找不到别名),那就是别名的问题,用unalias kubectl删掉就行。
4. 文件损坏?(可能性较低)
虽然你在/usr/local/bin执行正常,但也可以重新下载一次kubectl替换掉,排除下载过程中文件损坏的可能。另外检查下文件权限:
ls -l /usr/local/bin/kubectl
确保它的权限是-rwxr-xr-x(也就是你之前加的chmod +x已经生效)。
内容的提问来源于stack exchange,提问作者plithner
相关产品推荐
相关产品推荐

