My understanding is that you only need the `./` for a bare basename command, because it looks for such commands on your `PATH`. If you include a path (like `bin/`), it assumes the executable can be found at the given path, so the `./` is not required. So, you'd need to do `./setup` but not `./bin/setup`.

Maybe @pbrisbin or @mike-burns could clarify; it's hard to search for dots and slashes.

I found a couple references, but they don't seem to clarify commands with relative paths.

* http://stackoverflow.com/questions/6331075/why-do-you-need-dot-slash-before-script-name-to-run-it-in-bash
* http://www.linfo.org/dot_slash.html