`go run` takes multiple files as arguments. When you type `go run
ls.go ls.go` you are asking the go tool to build a Go program that
consists of the contents of ls.go repeated twice. Before it even gets
to that point, it says "wait, you've told me the same file name twice,
that can't be right" and then it starts talking about a
case-insensitive file name which is certainly confusing. This is kind
of hard to avoid using `go run`, as it takes any argument that ends
with ".go" as meaning a Go file to compile.
Ian