
本文详解在 ubuntu 14.04 上通过 go 安装 json2csv 时常见的 `command not found` 问题,核心在于将 `$gopath/bin` 添加到系统 `path` 环境变量中,使可执行文件全局可用。
当你运行 go get github.com/jehiah/json2csv 后,Go 工具链会成功下载源码、编译并生成二进制文件 json2csv,默认存放于 $GOPATH/bin/ 目录下(而非当前工作目录或 /usr/bin)。尽管你已确认 ~/projects/go/bin/json2csv 存在且具备可执行权限,但 Shell 无法识别该命令,根本原因是:系统 PATH 环境变量未包含 $GOPATH/bin 路径。
要解决此问题,请将以下行添加到你的 shell 配置文件中(Ubuntu 默认使用 Bash,对应 ~/.bashrc):
export PATH="$GOPATH/bin:$PATH"
✅ 注意:务必放在 export GOPATH=... 之后,确保 $GOPATH 已正确定义;同时建议使用双引号包裹 "$GOPATH/bin:$PATH",防止路径含空格时出错。
完成编辑后,重新加载配置:
source ~/.bashrc
验证是否生效:
echo $PATH | grep "projects/go/bin" # 应可见匹配项 which json2csv # 应输出 ~/projects/go/bin/json2csv json2csv --help # 可正常调用,显示帮助信息
⚠️ 补充说明:
- 不要将 GOROOT 设为 /usr/bin/go —— 这是 Go 可执行文件路径,而非 Go 安装根目录(通常为 /usr/lib/go 或 /usr/local/go)。若非自定义安装,建议完全省略 GOROOT 设置,Go 工具链会自动检测。
- GOPATH 是工作区路径,用于存放 src/(源码)、pkg/(包对象)、bin/(可执行文件),必须确保其 bin/ 子目录存在(mkdir -p $GOPATH/bin)。
- 若使用 Zsh 或其他 Shell,请修改对应配置文件(如 ~/.zshrc)并执行 source ~/.zshrc。
至此,json2csv 即可像普通命令一样在任意目录下直接调用,完成 JSON 到 CSV 的高效转换。










