kurahaupo_ 1426764807 learn see !pathname kurahaupo_ 1426764880 forget kurahaupo_ 1516431624 learn Why do you need to type "./foo" to run "foo" when it's in the current directory? The answer is you don't. What you do need is to provide a pathname with at least one "/", and "./foo" happens to be the second-shortest pathname after just "foo". You can use any valid relative or absolute filepath, including "$PWD/foo" or "././././foo" or even "some_valid_subdirectory/../foo"; all of them will invoke the same "foo". kurahaupo_ 1516432102 forget kurahaupo_ 1516432104 learn Why do you need to type "./foo" to run "foo" when it's in the current directory? The answer is you don't. If you type a command without a "/" in it, the shell will only look for it in the places listed in $PATH, and since "." isn't, you need is to provide a pathname with at least one "/". "./foo" happens to be the second-shortest pathname (after just "foo"), but you can use any valid relative or absolute filepath kurahaupo_ 1516432165 forget kurahaupo_ 1516432469 learn Why type "./foo" when "foo" is in $PWD? If you type a command without a "/" in it, the shell will only look for it in the places listed in $PATH (and "." isn't). So you need to provide a filepath with at least one "/", and "./foo" just happens to be the shortest, but you can use any valid relative or absolute filepath, including "$PWD/foo" or "././././foo" or even "some_valid_subdirectory/../foo".