Okazuje się, że ta funkcja nie jest specyficzna dla Apple. Jest to ogólna cecha systemów BSD.
/* Root is -A automatically. */
if (!getuid())
f_listdot = 1;
Początkowo byłem w stanie prześledzić go z powrotem do źródeł 4.4BSD-Lite . Był już obecny w tym zatwierdzeniu FreeBSD z 1994 roku, który importuje te źródła.
Ta funkcja jest również obecna w OpenBSD i można ją znaleźć w tym zatwierdzeniu z 1995 roku, które twierdzi, że importuje kod z NetBSD, więc było to już obecne w NetBSD .
Następnie odkrywa się zatwierdzenie NetBSD z 1993 roku, które twierdzi, że importuje kod z 386BSD , a funkcja jest już dostępna . Co więcej, to zatwierdzenie pokazuje, że istniało ono podczas rozwoju wersji 386BSD 0.0 w 1991 roku, która rozwinęła się z BSD około 4.3, o ile wiem.
Komentarz pojawił się po raz pierwszy podczas opracowywania wersji 4.3BSD-Reno w tym zatwierdzeniu (27 czerwca 1989 r.) Zatytułowanym „pierwsza działająca wersja nowego ls”. Oryginalny komentarz brzmiał:
/* root sees all files automatically */
który został zmieniony później tego samego dnia (nie jestem jednak pewien, czy znaczniki czasu są w tym repozytorium całkowicie poprawne), aby:
/* root is -A automatically */
Dopiero w 1992 r. Dodano wielką literę i kropkę , zmieniając komentarz w to, co mamy teraz:
/* Root is -A automatically. */
Ale zachowanie było obecne w 2BSD od 9 maja 1979 r., Jak widać na tej migawce :
Aflg = getuid() == 0;
Nie mogę znaleźć żadnej faktycznej historii z tamtych czasów, ale jest też migawka 1BSD z 1977 roku bez tych linii. I -A
właściwie bez flagi.
Wygląda więc na to, że funkcja została wprowadzona gdzieś między listopadem 1977 r. (1BSD jest w tym momencie opracowywana) a wydaniem 2BSD w maju 1979 r.
Podczas tego dochodzenia odkryłem także -I
flagę, która została dodana do FreeBSD w 2005 roku w celu zastąpienia tego zachowania i została przerobiona nieco później.