解决Mac-zsh找不到命令

本文指导你如何在升级MacOS Catalina后,由于zsh和bash环境变量配置差异导致的command not found问题。通过编辑.zshrc文件,引入原有配置并确保bash兼容性。

Mac OS zsh: command not found XXX 的原因和解决方法

因为MacOS Catalina默认使用了zsh的Shell语言,系统更新后可能会导致部分命令出现找不到的情况

原因

导致命令不可用的真正原因是zsh和bash的默认环境变量配置文件地址不一致导致的。
比如我一般习惯把环境变量配置到 /etc/profile 中,这应该也是大多数有linux的bash操作习惯的人喜欢配置的路径。
但是zsh的默认并没有读取/etc/profile的环境变量,所以导致之前在环境变量配置的环境失效了。

解决方法

编辑.zshrc文件

vim ~/.zshrc   

引入之前的配置文件就可以了

#Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
source ~/.bash_profile
source /etc/profile

执行一下

source ~/.zshrc   

bash与zsh不能完全兼容,所以最主要还是以bash为主

macOS 上使用 `zsh` 时,如果通过 `go install` 安装了某个命令行工具,但在终端中执行时提示 `command not found`,通常是因为 `$GOPATH/bin` 或 `$HOME/go/bin`(Go 1.11 及以后版本默认使用 `$HOME/go`)未包含在 `$PATH` 环境变量中。 ### 确保 Go 安装路径已添加到 PATH 默认情况下,`go install` 会将编译后的二进制文件放置在 `$GOPATH/bin` 中。如果未设置 `$GOPATH`,则默认为 `$HOME/go`,因此可执行文件通常位于 `$HOME/go/bin`。 需要将该路径加入 `zsh` 的环境变量中。可以编辑 `~/.zshrc` 文件,并添加以下内容: ```bash export PATH="$HOME/go/bin:$PATH" ``` 保存后,运行以下命令使配置生效: ```bash source ~/.zshrc ``` ### 验证安装路径是否正确 可以通过以下命令查看当前 `go env` 中的 `GOPATH` 和 `GOBIN` 设置: ```bash go env GOPATH go env GOBIN ``` 如果 `GOBIN` 未设置,则默认使用 `$GOPATH/bin`。确保该路径存在于 `$PATH` 中。 ### 示例:安装 `golangci-lint` 并验证路径 假设用户执行了以下命令安装 `golangci-lint`: ```bash go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest ``` 安装完成后,应检查 `$HOME/go/bin` 是否存在 `golangci-lint` 可执行文件: ```bash ls $HOME/go/bin/golangci-lint ``` 如果存在但仍然提示命令到,则说明 `$PATH` 未正确设置。 ### 配置 Zsh 环境变量的最佳实践 除了将 `$HOME/go/bin` 添加到 `$PATH` 外,还可以考虑以下增强配置: ```bash # 设置 GOPATH(如果需要) export GOPATH="$HOME/go" # 将 GOPATH/bin 添加到 PATH export PATH="$GOPATH/bin:$PATH" # 添加 Go 工具链路径(如果使用了自定义安装路径) export PATH="/usr/local/go/bin:$PATH" ``` 完成上述配置后,再次执行 `source ~/.zshrc` 并尝试运行已安装的 Go 工具。 ### 验证当前 PATH 环境变量 可以使用以下命令查看当前的 `PATH` 设置: ```bash echo $PATH ``` 确保输出中包含 `$HOME/go/bin`。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值