Общее определение для этого, вероятно, не будет найдено в руководстве по Bash, но спецификацией POSIX (раздел Разрешение имени пути):
Точка специального имени файла должна указывать на каталог, указанный его предшественником.
Ну, а какой предшественник у нас только есть .? Я подчеркнул важную часть:
Если имя пути не начинается с косой черты, то в качестве текущего рабочего каталога процесса следует использовать предшественника первого имени файла пути.
Также,
Имя пути, которое содержит по крайней мере один символ без косой черты и заканчивается одним или несколькими завершающими слешами, должно быть разрешено, как если бы к имени пути был добавлен один символ точки ('.').
Таким образом, когда вы ./ это решается как ./. , который в основном указывает на ваш текущий рабочий каталог. Когда вы что-то наберете в своей оболочке и нажмете Enter , оболочка попытается выполнить первую часть как команду. (В основном первая группа символов до первого пробела.)
Не существует команды или исполняемого файла ./. , поэтому он потерпит неудачу и скажет вам, что ./ "это каталог". Интересно, что . это команда (это встроенная команда также нашли в качестве source поэтому , когда вы просто . вы получите: bash: .: filename argument required .