In the UNIX world, it's well understood that you need to prefix binaries in the current directory with ./ in order to run them: . is not in $PATH by default. This is to avoid evil binaries overriding system utils like ls and getting code exec.I would like to know the history of this decision. Was it in UNIX from the beginning? Certain shells?I want to be clear: I'm not looking for reasons in general why it was implemented; I understand those. I'm looking for the event that caused it or at least when the change was made.Citations would be much appreciated.Interestingly, it looks like bash actually intends to include ., at least that's my reading of this source (from config-top.h):/* The default value of the PATH variable. */#ifndef DEFAULT_PATH_VALUE#define DEFAULT_PATH_VALUE \  /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.#endif(Some have questioned the relevance of this question. There's been some talk about a number of executable installers on Windows that are vulnerable to a similar attack: executables by default will search for DLLs in ., so by planting an evil DLL in say Downloads, you get code exec, often as admin. It's a Those who don't learn history are doomed to repeat it moment.)
History of UNIX not including current directory in $PATH
path;history