
本文详解在 ubuntu 14.04 中通过 `go get` 安装 json2csv 后命令不可用的常见原因及解决方案,核心在于将 `$gopath/bin` 正确添加至系统 `path` 环境变量。
虽然 go get github.com/jehiah/json2csv 成功下载并编译了可执行文件(位于 $GOPATH/bin/json2csv),但终端仍提示 command not found,根本原因是:Linux shell 默认不会在 $GOPATH/bin 目录中查找命令。该目录未被包含在 PATH 环境变量中,因此即使二进制文件存在且具备执行权限,Shell 也无法定位并运行它。
✅ 正确配置步骤
-
确认当前 GOPATH 设置
运行以下命令验证路径是否一致:echo $GOPATH # 应输出:/home/
/projects/go ls -l $GOPATH/bin/json2csv # 应显示可执行文件(如 -rwxrwxr-x) -
将 $GOPATH/bin 加入 PATH
编辑 ~/.bashrc(或 ~/.profile,若使用非交互式 Shell):echo 'export PATH=$GOPATH/bin:$PATH' >> ~/.bashrc source ~/.bashrc
⚠️ 注意:不要写成 export PATH=$GOPATH/bin:/usr/bin/go/bin:$PATH —— GOROOT 指向 /usr/bin/go 是错误的(GOROOT 应指向 Go 的安装根目录,如 /usr/lib/go 或 /usr/local/go;而 /usr/bin/go 只是可执行文件链接,非目录)。本例中 GOROOT 设置虽不影响 json2csv 运行,但建议修正为:export GOROOT=/usr/lib/go # Ubuntu 14.04 默认位置,可通过 `dpkg -L golang-go` 确认
-
验证生效
echo $PATH | grep "bin" # 应看到类似 /home/
/projects/go/bin 出现在路径开头 which json2csv # 应返回 /home/ /projects/go/bin/json2csv json2csv --help # 应正常输出帮助信息
? 补充说明
- go get 默认将编译后的二进制文件放入 $GOPATH/bin,而非当前目录或 /usr/local/bin;
- 修改 ~/.bashrc 后务必执行 source ~/.bashrc(或重启终端),否则变更不生效;
- 若使用 zsh(如 Ubuntu 20.04+ 默认),请改编辑 ~/.zshrc;
- 推荐始终使用 $GOPATH/bin:$PATH(而非 $PATH:$GOPATH/bin),确保本地工具优先于系统同名命令。
完成上述配置后,json2csv 即可在任意目录下直接调用,无需指定完整路径。这是 Go 生态中管理第三方命令行工具的标准实践。










