在Linux操作系统上,运行" realpath~ / bin"给出正确的路径" / home / user1 / bin"。
但是当我按照下面的方式运行时:
panic: exit status 1
我得到cmd := exec.Command("realpath", "--help")
。
BTW:使用以下命令:
realpath
我可以获得{{1}}命令的正确帮助消息。我认为这意味着它确实在我的可执行路径中。
答案 0 :(得分:1)
如果你在shell中运行命令(例如bash),shell会扩展tilde-prefix,然后传递给realpath
。
但是,如果您在go应用程序中运行它,则tilde保持不变,realpath
将其视为路径名的一部分。要查看差异,可以在shell(Linux OS)中尝试以下命令:
//1. correctly expanded
realpath './bin'
//2. tilde not expanded
realpath '~/bin'
//3. tilde expansion
realpath ~/bin
(2)应该失败,你的应用程序中的情况与此类似。要进行验证,请按以下步骤更改您的密码:
cmd := exec.Command("realpath", "~/bin")
var out bytes.Buffer
var serr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &serr
err := cmd.Run()
if err != nil {
fmt.Printf("Error = %v, %v\n", err, serr.String())
panic(err)
}
fmt.Println("Realapth:", out.String())
您应该能够观察到realpath
命令产生的错误消息。