我们的客户之一是遇到一个奇怪的错误时运行我们的cli二进制.我缩小了这错误到一个调用我们是为argocd login
,这为一些原因失败与
Local config: current-context unset
通过深入挖掘argo-cd源代码,我 * 怀疑 * 这一切都可以归结为使用""
调用os.ReadFile
,而""
在他们的计算机上 * 不 * 返回ENOENT。
package main
import (
"fmt"
"os"
)
func main() {
_, err := os.ReadFile("")
if err != nil {
fmt.Printf("err: %v\n", err)
if os.IsNotExist(err) {
fmt.Println("err is NotExist")
} else {
fmt.Println("err is *not* NotExist")
}
} else {
fmt.Println("no error at all")
}
}
在我测试的每个Linux发行版上,我都得到了err is NotExist
。但我怀疑这个问题可能是由客户运行的特定env引起的。目前我所知道的是,他们将shell转换为EC2,然后转换为一些内部的docker容器,并以root用户身份运行命令。
这里有没有人有任何提示,我可以寻找什么,什么可能导致这个调用 * 不 * 返回ENOENT?
1条答案
按热度按时间kgsdhlau1#
os.ReadFile
将文件名直接传递给open(2)系统调用。如果os.ReadFile("")
不返回ENOENT
,则意味着: