Golang中如何修改tmp文件的位置

Golang中如何修改tmp文件的位置 大家好, 请问是否有人能告知,在使用"go run hello-world.go"运行Go代码时,能否指定Go将编译后的.exe文件放置在何处运行?公司要求不能使用C:Win\tmp文件夹,因为下一版企业杀毒软件会扫描该文件夹并阻止其中的.exe文件运行。

虽然可以通过go build生成.exe文件再运行,但这样的工作流程既繁琐又缓慢。

非常感谢任何帮助。谢谢。

func main() {
    fmt.Println("hello world")
}
5 回复

是的,我认为它们的功能完全相同。通常我建议使用 build 的方式,因为当你的应用程序变得更大时(更多文件、测试等),run 的方式可能会变得复杂。

更多关于Golang中如何修改tmp文件的位置的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


嗯,我建议运行类似这样的命令:

go build <file> -o c:\path\to\my\binary && c:\path\to\my\binary

不确定这对您是否可行。

致以问候

非常感谢。我会尝试一下。我之前考虑过写一个小应用,在当前缓冲区上调用go build,将输出发送到指定位置然后运行它。我想,这或多或少就是您的建议所实现的功能吧?

在采取这种方法之前,我只是想确认是否没有更简单的方式来改变go run的默认输出。

谢谢!

设置 TMP 环境变量。

C:\Users\esmarques>set TMP=c:\users\esmarques
C:\Users\esmarques>go run main.go
c:\users\esmarques\go-build735217614\b001\exe\main.exe: hi

使用的示例代码:

package main
import (
	"fmt"
	"os"
)
func main() {
	fmt.Printf("%s: hi\n", os.Args[0])
}

在Go语言中,可以通过设置环境变量 GOTMPDIR 来指定临时文件(包括编译生成的临时可执行文件)的存放位置。这样,你可以避免使用默认的 C:\Windows\tmp 目录,从而绕过企业杀毒软件的限制。

步骤:

  1. 设置 GOTMPDIR 环境变量:将其指向一个自定义目录,例如 D:\my_temp
  2. 运行 go run 命令:Go 工具链将使用你指定的目录来存放临时文件。

示例:

假设你希望将临时文件放在 D:\my_temp 目录中。

在 Windows 命令提示符(CMD)中:

set GOTMPDIR=D:\my_temp
go run hello-world.go

在 PowerShell 中:

$env:GOTMPDIR = "D:\my_temp"
go run hello-world.go

在 Linux/macOS 的终端中(如果适用):

export GOTMPDIR=/home/user/my_temp
go run hello-world.go

注意事项:

  • 确保自定义目录(如 D:\my_temp)存在且有写入权限,否则 go run 会失败。
  • 这个设置仅对当前终端会话有效。如果需要永久生效,可以在系统环境变量中添加 GOTMPDIR
  • go run 会在 GOTMPDIR 指定的目录中生成临时可执行文件,运行后自动清理,因此不会留下持久的 .exe 文件。

通过这种方式,你可以继续使用 go run 的便捷性,同时满足公司安全策略的要求。如果问题持续,请检查杀毒软件是否也扫描了自定义目录。

回到顶部