Czy terminal i shell są takie same?

29

Wiem, że to może zabrzmieć głupio, ale chciałem tylko wiedzieć, czy naprawdę istnieje różnica między tymi dwoma słowami używanymi w świecie Linuksa. Wiem, że Shell jest interfejsem wiersza poleceń i ma wiele wariantów, takich jak Bash, Korn itp. I wiem też, że Ctrl + Alt + T uruchamia terminal na Ubuntu. Chcę tylko połączyć te dwie kropki.

Czy to oznacza, że ​​terminal jest oknem, które się otwiera, a powłoka jest programem, który działa w celu interpretacji poleceń wpisanych w oknie? Czy też są takie same, w których terminal jest ogólnym terminem używanym do wyodrębnienia pojęć Shell itp.?

Co dokładnie odróżnia te dwa słowa?

Vamsi Emani
źródło

Odpowiedzi:

30

Emulator terminala (często nazywany terminalem) to „tylko okno”, tak. Działa program tekstowy, który domyślnie jest twoją powłoką logowania (która jest Ubuntu). Kiedy wpisujesz znaki w oknie, terminal rysuje te znaki w oknie oprócz wysyłania ich do standardowego wejścia powłoki (lub innego programu). Znaki, które powłoka wyprowadza na stdout i stderr, są wysyłane do terminala, który z kolei rysuje te znaki w oknie.

Tak więc, powłoka i emulator terminala są całkowicie osobnymi programami i można z nich korzystać bez drugiego.

geirha
źródło
2
Jak korzystać z powłoki bez terminala?
Koray Tugay
5
@KorayTugay, kiedy uruchamiasz skrypt powłoki z crona lub za pomocą programu uruchamiającego na pulpicie (gdzie nie zaznaczyłeś „uruchom w terminalu”), używasz powłoki bez terminala.
geirha
8

Myślę, że to pytanie zostało dość dokładnie zbadane na stronie wymiany stosów Unixa i Linuksa: Różnice między powłoką, konsolą i terminalem

Geeb
źródło
3
Czy możesz dodać istotne części linku do swojej odpowiedzi?
jokerdino
To nie jest odpowiedź, to jest komentarz.
Koray Tugay
6

Tak, emulator terminala i powłoka to dwa różne programy. Jak wiesz, jednym z przykładów różnicy jest to, że uruchomienie okna terminala może uruchamiać różne powłoki w zależności od tego, co skonfigurowałeś (bash, tcsh, ksh, ash, a nawet python!).

Kolejna różnica polega na tym, że istnieje więcej emulatorów terminali niż tylko domyślny: gnome-terminal, kilka odmian xterm, konsola (dla KDE) itp. (Patrz: http://www.howtogeek.com/howto/ubuntu/set- the-default-terminal-emulator-on-ubuntu-linux / ). Dowolną powłokę można uruchomić w dowolnym z tych emulatorów terminali bez większych trudności.

Trzecia różnica polega na tym, że oprócz uruchamiania poleceń powłoki można także uruchamiać niektóre interaktywne aplikacje w emulatorze terminali i będą one działać w tym samym oknie (i nadal będą korzystać z tego samego programu emulatora terminali do obsługi rzeczywistej grafiki), takich jak edytor tekstu vim, nethack RPG i inne. Jeśli chcesz, możesz skonfigurować profil w emulatorze terminali, aby uruchomić nethack, powiedzmy, automatycznie po otwarciu nowej karty; nie jest zaangażowana powłoka, ale emulator terminala jest nadal tym samym programem.

Czwarta różnica polega na tym, że możesz wykonywać zdalne logowanie, używając programu takiego jak ssh, z poziomu okna terminala. W takim przypadku twoja powłoka (lub jakikolwiek program uruchamiany zdalnie) działa na innym komputerze, a program ssh łączy ją z lokalnym emulatorem terminalu uruchomionym na twoim komputerze, który obsługuje grafikę.

Jonathan Cast
źródło