解决 zsh: command not found 报错

2023-05-16

问题描述

最近在开发 Go 项目,使用 go get -u xxxx 成功下载安装包后,在终端执行新下载包的命令,一直报 zsh: command not found 的错误。一开始以为是包没安装成功,但检查后发现不是,如下图所示,swag 包有安装。后来才意识到有可能是环境变量出问题。
报错信息
环境变量
执行echo $PATH 命令,发现该路径最后使用的 go bin 路径并不是我所设置的 GOBIN。查找相关文件后才知道原来 oh my zsh 所加载的环境变量并不是 Mac 本身自带的环境变量不同。

原因

在 Mac 中有几个地方可以修改环境变量,分别是:

  1. /etc/profile
  2. /etc/paths
  3. ~/.bash_profile

其中 /etc/profile 和 /etc/paths 是全局变量,适合全部用户,当系统启动时会自动加载。这些变量都是系统级别的,修改时要小心。而 ~/.bash_profile 是当前用户使用的环境变量,一般我们新增环境变量的话,都是在这个文件中进行修改。
而 oh my zash 所加载的环境变量使用的是 ~/.zshrc 这个文件。
当我们在命令行中使用 EXPORT GOPATH="~/Code/Go" 时,其实只是把 GOPATH 添加到 ~/.bash_profile 中,对 ~/.zshrc 这个文件并没有影响。

解决方法

知道原因后那就很好解决了。接下来就是把在 ~/.bash_profile 中设置的环境变量(GOROOT、GOPATH、GOBIN)添加到 ~/.zshrc 中。
在 ~/.zshrc 中添加 go 的环境变量
添加好后执行 source ~/.zshrc 生效配置。

总结

以后碰到类似的报错则可按以下流程检查:

  1. 检查软件是否正确安装
  2. 若软件正确安装,检查环境变量是否正确配置

本文主要参考了以下两篇文章:

  1. https://www.cnblogs.com/dadonggg/p/11097771.html
  2. https://www.jianshu.com/p/020f3d02f538

若我的文章对您有帮助,请不要吝啬您的点赞哦!
若有讲错的地方,欢迎指正 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决 zsh: command not found 报错 的相关文章

  • 如何在 Mac 上使用 Pipenv?

    当通过 pip 安装它时 pip install pipenv 在 zsh shell 上找不到命令pipenv 如果通过安装brew brew install pipenv 然后运行pipenv shell 出现错误 Loading en
  • 什么是 Programdata/Application Data 文件夹?

    因此 我正在编写一个迭代指定目录树的应用程序 并且我正在尝试处理文件夹访问权限的异常 并且我遇到了编译器返回的一个文件夹 其中包含 C ProgramData Application Data 目录 有谁知道这个文件夹是什么 它似乎不存在于
  • node.js -- 同步执行命令并获取结果

    我试图在 node js 中同步执行 child process 是的 我知道这很糟糕 我有充分的理由 并检索 stdout 上的任何输出 但我不太清楚如何 我发现这个帖子 Node js同步执行系统命令 https stackoverfl
  • Matlab:从命令窗口重命名工作区元素?

    Matlab 的 GUI 允许我通过右键单击元素并选择 重命名 选项来重命名工作区中的任何元素 是否也可以从命令窗口执行此操作 这些是您可以轻松亲自测试的事情 并且您应该这样做 这是学习 发现的最佳方式 无论如何 答案是否定的 您不能从命令
  • 如何在 Emacs 中创建目录?

    究竟如何使用 Emacs 创建新目录 我使用什么命令 如果可以的话请举个例子 创建目录dir to create type M x make directory RET dir to create RET 创建目录dir parent1 n
  • Adobe AIR 执行程序

    我想按下 Adob e AIR 应用程序中的按钮并执行某些已安装的程序 例如 我有一个名为 Start Winamp 的按钮 当按下这个按钮时 它应该直接启动 Winamp exe 我不想执行一些命令行 我只想启动一个 exe 或者 是同一
  • 通过 Java 执行 ADS 相关的 Powershell 命令不起作用,使用 2 种不同的方式时会出现 2 种不同的错误

    我一直在尝试通过 java 在 powershell 会话中执行一组命令 但还没有成功 我的目标是在 AD 中搜索域为 domain com 的计算机对象 我从一个命令开始 不幸的是 以下命令在我的 powershell 提示符下成功运行
  • 从 UNIX 树中删除路径前缀

    我对 UNIX 命令有一个要求 我有一条与此类似的路径 path to file manyfiles extensions 现在我想要的输出类似于 file manyfiles extensions 现在我可以列出 path to 和 pa
  • `npm i` 命令有什么作用?

    什么是i在 npm CLI 中执行命令 我看到它是这样使用的 npm i package The iflag 是一个别名install so npm i package 是相同的 npm install package 从文档中 npm i
  • mifare 卡身份验证错误“6982:安全状态未满足”

    我有 pc sc 读卡器和非接触式卡 mifare 卡 我可以连接到该卡 并且我也成功执行 getdate 命令 但是当我想进行身份验证时 我看到此错误 6982 安全状态不满足 我已经尝试过这 3 个不同的身份验证命令 但所有这些命令都出
  • 无法在 Zsh 中找到 Bash 的替代命令

    我将最新的 git completion bash 放入我的 zshrc 中 然后我得到 Users Masi bin shells git git completion bash 2116 command not found comple
  • 使用 zsh 在终端中启动 Sublime Text 3

    我最近购买了一台新 MacBook 我正在尝试重新配置我的系统 该应用程序位于应用程序文件夹内 名称为 Sublime Text app 我已经通过我在网上找到的其他建议编辑了 sublime plugin zsh 文件到 Sublime
  • 当用户控件可见时将焦点设置到它

    I am showing a MessageBox and want the user to be able to copy the contents of the message using CTRL C The problem is t
  • 如何在c#中使用net user

    我正在尝试将 net user 与 c 一起使用 System Diagnostics ProcessStartInfo proccessStartInfo new System Diagnostics ProcessStartInfo n
  • 使用通配符在 .zshrc 中获取多个文件

    我通过 oh my zsh 使用 z shell 我想从 zshrc 文件中获取多个别名文件 这样我就可以让事情井井有条 我已经为别名文件添加了前缀 alias 这样我就可以通配符加载它们 但是 打电话给source alias 只加载第一
  • 如何阅读shell命令的源代码?

    我想阅读编写linux命令的实际源代码 我已经获得了一些使用它们的经验 现在我认为是时候与我的机器进行更深层次的交互了 我在这里找到了一些命令http directory fsf org wiki GNU http directory fs
  • Zsh 中的鱼式自我暗示?

    有没有办法做到鱼的自我暗示类型 http ridiculousfish com shell images autosuggestion png in Zsh https github com tarruda zsh autosuggesti
  • 如何显示 zsh 函数定义(如 bash“type myfunc”)?

    如何在 zsh 中显示函数的定义 type foo没有给出定义 在bash中 bash function foo echo hello bash foo hello bash type foo foo is a function foo e
  • 需要帮助打印清单

    我正在用 Python 处理待办事项列表 目前我一直在打印待办事项列表 我有我的添加代码和查看代码 if sel 1 add task name input enter task name prio input enter priority
  • 使用命令启动 Tmux 并指定配置文件

    我正在研究交互式的小脚本 我试图启动 tmux 既指定命令 以便当进程退出时 tmux 会话退出 并使用配置文件 但似乎这是不可能的 tmux new session d s myapp python myapp py f myapp tm

随机推荐