Dlaczego dwukropek ( :
) został wybrany jako separator ścieżki?
Zauważ, że mam na myśli „separator ścieżki”, a nie „separator katalogu”. Separator ścieżek to symbol umieszczony między wpisami w PATH
zmiennej środowiskowej.
PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..."
^ this symbol
Wszystko, co znajdowało się w komputerach i oprogramowaniu, było kiedyś świadomą decyzją podejmowaną przez kogoś. Na przykład dlaczego tylda reprezentuje katalog domowy (i dlaczego hjkl dla klawiszy kierunkowych w vi) . Lubię znać tło tej decyzji.
Kilka przypadkowych faktów:
Posiadanie dwukropka jako separatora ścieżki oznacza, że do ścieżki nie można dodać katalogu z dwukropkiem w nazwie.
z POSIX:
Ponieważ
<colon>
w tym kontekście jest to separator, nazwy katalogów, które mogą być użyte w zmiennej PATH, nie powinny zawierać<colon>
znaku.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
Wydaje się, że ucieczka z jelita grubego nie jest możliwa. @ Random832 z przepełnienia stosu sprawdził PATH obsługujący kod źródłowy i nie znalazł mechanizmu zmiany znaczenia.
/etc/passwd
(który zawiera również ścieżki w kolumnach głównej i powłoki).%
specjalnie w$PATH
.PATH
przed wprowadzeniem Unix wersji 7 (w 1979 roku) , ale nie było:
-delimited ścieżka wyszukiwania już w 1977. PWB / Unix (programisty Workbench) stosowany w Mashey skorupę , napisany przez John R. Mashey , który chronologicznie spadł między skorupą Thompsona i skorupą Bourne'a. … (Ciąg dalszy)p
była ścieżka wyszukiwania (zwana „sekwencją przeszukiwania katalogu powłoki w celu wykonania polecenia”), z katalogami oddzielonymi dwukropkami. …………………………………………………………… Ciekawostka: podczas gdy powłoka Mashey przetworzyła.profile
plik, pozwoliła również określić$p
wartość początkową w nazwie pliku.path
.Odpowiedzi:
Po kilku kopaniach nie mam prawdziwej odpowiedzi, ale przynajmniej nowe informacje do dodania do tej rozmowy poparte pewnymi faktami historycznymi.
Oto Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI w jednym ze swoich wystąpień mówiących o powłoce, około 19:00 można usłyszeć, jak wspominał, dlaczego
e
jest aliasem domyślnego edytora w powłokach uniksowych dzieje się tak dlatego, że starsze terminale nie były tak wygodne ani łatwe w użyciu, a pisanie na nich było nieprzyjemnym doświadczeniem.W tym przypadku wspomina o dokładnym modelu, https://en.wikipedia.org/wiki/Teletype_Model_33 .
Po kilku badaniach ( http://www.pdp8.net/asr33/asr33.shtml ) okazało się, że ta maszyna pozwala ci wybierać tylko w puli 64 znaków, nawet nie w pełni obsługuje ASCII w USA, 2 do potęgi 6 znaków , to 6-bitowa kombinacja.
Faktem jest, że ta maszyna w ogóle nie ma nic wspólnego z ASCII, co oznacza, że nie obsługuje nawet pierwszych 64 znaków ASCII, chodzi tylko o zupełnie niepowiązany zestaw danych wejściowych i prawdopodobnie nie jest to standardowy (dla naszej współczesnej) zestaw znaków .
z http://www.pdp8.net/asr33/asr33.shtml
a to tylko dowodzi, że zdecydowanie nie jest to US ASCII, biorąc pod uwagę fakt, że do obsługi wielkich liter naprawdę potrzebujesz więcej niż 6 bitów, wielkie litery są poza znakiem 64 znaków (lub wartością 63 w systemie dziesiętnym, jeśli chcesz podążać za tabelą)
Teraz wiemy, że otrzymujemy z tego 64 znaki, bez żadnego prawdziwego standardu do obsługi ich w zakodowanej tabeli, a także nie mamy małych liter, tylko wielkie litery oraz symbole i cyfry.
Dzięki tej stronie http://keyboards.jargon-file.org/#ASR33 mogę pokazać układ wejściowy takiej klawiatury
i naciskając SHIFT również dostajesz
Istnieje również nieco więcej informacji na temat kodowania fizycznych połączeń generujących znaki http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (strona wyjaśnia również, że ASR33 i znaki ASCII są różne do poziomu bitów).
Myślę, że warto zauważyć, że nie ma go
{
lub ma}
tylko,(
a)
to oznacza, że prawdopodobnie tworzenie podpowłok było w porządku, ale tworzenie nowych procesów prawdopodobnie nie było tak łatwe lub dozwolone przez terminal.Ostatecznie nie sądzę, aby istniała prawdziwa odpowiedź naukowa , prawdopodobnie była to postać „wolna”, czekająca na specjalne znaczenie; jedno jest pewne: powłoki i terminale są starsze niż ASCII i myślenie o ASCII lub dowolnej tabeli kodowanej, jaką znamy dzisiaj, prawdopodobnie nie rozwiąże tajemnicy.
źródło
:
znaku i powłoki stackoverflow.com/questions/3224878/…