Początkowo miałeś tylko głupie terminale - początkowo tak naprawdę maszyny do pisania (podobne do elektrycznej maszyny do pisania, ale z rolką papieru) (stąd / dev / tty - TeleTYpers), ale później ekran + kombinacje klawiszy - które właśnie wysłały kod klucza do komputera, a komputer odesłał polecenie, które napisało list na terminalu (tj. terminal nie miał lokalnego echa, komputer musiał nakazać terminalowi napisanie tego, co użytkownik wpisał na terminalu) - jest to jeden z powodów dlaczego tak wiele ważnych poleceń Uniksa jest tak krótkich. Większość terminali była podłączona liniami szeregowymi, ale (przynajmniej) jeden był bezpośrednio podłączony do komputera (często tego samego pokoju) - była to konsola. Zaufało tylko kilku wybranym użytkownikom, którzy pracowali na „konsoli” (był to często jedyny „terminal” dostępny w trybie pojedynczego użytkownika).
Później pojawiły się również terminale graficzne (tak zwane „xterminale”, których nie należy mylić z xterm
-programem) z ekranem i graficzną kartą ekranową, klawiaturą, myszą i prostym procesorem; który może po prostu uruchomić serwer X. Nie wykonali żadnych obliczeń, więc klienci X działali na komputerze, z którym byli połączeni. Niektóre miały dyski twarde, ale mogły także uruchamiać się przez sieć. Były popularne na początku lat 90., zanim komputery stały się tak tanie i wydajne.
„Emulator terminala” - „okno terminala” otwierane za pomocą programów takich jak xterm
lub konsole
- próbuje naśladować funkcjonalność takich głupich terminali. Również programy takie jak PuTTY
(Windows) emulują terminale.
Na PC, gdzie „konsola” (klawiatura + ekran) i „komputer” są bardziej pojedynczą jednostką, masz zamiast tego „wirtualne terminale” (w Linuksie klawisze Alt + F1 do Alt + F6), ale one też naśladują terminale w starym stylu. Oczywiście, ponieważ Unix / Linux stał się bardziej stacjonarnym systemem operacyjnym często używanym przez pojedynczego użytkownika, teraz większość pracy wykonujesz „na konsoli”, gdzie użytkownicy wcześniej korzystali z terminali połączonych liniami szeregowymi.
Oczywiście jest to powłoka, która uruchamia programy. I używa fork-systemcall (język C), aby wykonać swoją kopię z ustawieniami środowiska, a następnie exec-systemcall służy do przekształcenia tej kopii w polecenie, które chcesz uruchomić. Powłoka zawiesza się (chyba że polecenie zostanie uruchomione w tle), dopóki polecenie się nie zakończy. Ponieważ polecenie dziedziczy ustawienia dla stdin, stdout i stderr z powłoki, polecenie zapisze na ekranie terminala i odbierze dane z klawiatury terminala.