3 ms·
One issue is when the path is not interpreted by the shell but by a program which plays by different rules. For example in Go: $ cd /path/to/go/repo $ go
by PhilippGille 1y ago
One issue is when the path is not interpreted by the shell but by a program which plays by different rules.
For example in Go:
$ cd /path/to/go/repo
$ go run cmd/myapp
package cmd/myapp is not in std (/usr/local/go/src/cmd/myapp)
$ go run ./cmd/myapp
Hello, World!
And then people don't want to think about when your path is for the shell and when it's a CLI param and how the CLI treats it, and just use the version that always works.
- Y_Y 1y agoThanks, this is the first good reason I've seen! Seems crazy to me that the go tool does that, but maybe I just lack sufficient unix-nature.
- zahlman 1y agoThis allows it to disambiguate between system path syntax and the language's syntax for symbolic names. Similarly, package installers can use this to disambiguate between "install the local file with this exact name" and "look up a file on the index for the named package".
- School-Cotton 1y agoThis is one of the papercuts of go that I find way more annoying than is rational.
- catlifeonmars 1y agoThat’s because cmd/myapp is not a local path, it’s a universal path. It makes more sense when you type go run github.com/user/name/cmd/myapp
- PhilippGille 1y ago> cmd/myapp is not a local path, it’s a universal path In `go run` the CLI interprets it as universal path, to be precise. That's exactly the point. > go run github.com/user/name/cmd/myapp That's not an alternative when you're working on the app's code locally. You have to use `./cmd/myapp`. And when you do that multiple times per day/week, after a while you just start always using `./` prefix for local paths.
- catlifeonmars 1y agoWould it be preferable to use a URI for go run? For example - go run go://cmd/foo - go run file:///cmd/foo