首页 >后端开发 >Golang >为什么'sudo go run main.go”在 Ubuntu 16.04 上找不到可执行文件?

为什么'sudo go run main.go”在 Ubuntu 16.04 上找不到可执行文件?

DDD
DDD原创
2024-11-15 15:58:02716浏览

Why does

了解“sudo go run main.go”权限

尝试使用“sudo go run main.go”执行 Go 程序时在 Ubuntu 16.04 上,您可能会遇到错误,指示在 $PATH 变量中找不到可执行文件。出现这种情况是因为“sudo”命令默认会清除环境变量,从而阻止找到“go”二进制文件。

解决问题

要解决此问题问题,您应该在编译程序时绕过“sudo”命令。相反,使用“go build”或“go install”在没有提升权限的情况下构建二进制文件。编译二进制文件后,您可以使用“sudo”以提升的权限执行它。

分步说明

  1. 导航到包含以下内容的目录"main.go"。
  2. 不使用 sudo 编译二进制文件:

    • go build
    • 或 -
    • go install
  3. 使用提升的权限执行二进制文件:

    • sudo ./mycapt
    • 或 -
    • sudo $GOPATH /bin/mycapt

说明

通过首先在不使用 sudo 的情况下构建二进制文件,可以确保必要的环境变量,例如$GOPATH 和 $GOROOT 设置正确。当您使用 sudo 执行二进制文件时,会授予适当的权限,而不会干扰您的环境变量。

此方法有效地授予您捕获网络数据包所需的权限,同时保持环境变量的完整性。

以上是为什么'sudo go run main.go”在 Ubuntu 16.04 上找不到可执行文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn