Jaka jest różnica między „Shell” i „Bash” i co oznaczają te terminy?
O ile mi wiadomo, nie ma różnicy. Ale widziałem wiele książek o „Shell” i innych o „Bash”!
Jeśli więc chcę pracować z terminalem w systemie Mac OS X i napisać kilka skryptów bash, zastanawiam się, na jakie książki powinienem wybrać.
Odpowiedzi:
„ Powłoka ” to dowolne oprogramowanie, które zapewnia interfejs do systemu operacyjnego. Na przykład explorer.exe jest domyślną powłoką w Windows (chociaż istnieją alternatywy ), a w OS X Finder zapewnia wiele takich samych funkcji. W systemie Linux / * nix powłoka może być częścią środowiska pulpitu (takiego jak Gnome lub KDE ) lub może być oddzielnym komponentem programowym na nim (takim jak Unity lub Cinnamon ).
Powyższe przykłady to wszystkie powłoki graficzne, które używają kombinacji okien, menu, ikon i innych takich elementów w celu zapewnienia graficznego interfejsu użytkownika (GUI), z którym można korzystać za pomocą kursora myszy. Jednak w kontekście oprogramowania takiego jak Bash lub pisania skryptów „powłoka” zwykle oznacza interpretera wiersza poleceń, który wykonuje te same obowiązki co powłoka graficzna, z tym że całkowicie opiera się na tekście.
Bash jest konkretnym przykładem powłoki wiersza poleceń i jest prawdopodobnie jedną z najbardziej znanych, domyślną w wielu dystrybucjach Linuksa oraz OS X. Został zaprojektowany jako zamiennik powłoki Bourne'a (Bash stoi dla „Bourne again shell”), jednej z pierwszych powłok uniksowych .
Przykłady powłok wiersza poleceń w systemie Windows obejmują cmd.exe (inaczej Wiersz polecenia) i PowerShell .
źródło
Bash jest jedną z kilku powłok.
Powłoka w systemie uniksowym lub podobnym do Unixa, takim jak OSX lub Linux, to aplikacja, która udostępnia interfejs wiersza poleceń systemu operacyjnego, umożliwiając wpisywanie poleceń i uruchamianie ich. Istnieje wiele różnych powłok do wyboru, ale wszystkie zawierają wieloznaczne nazwy plików, potoki, dokumenty, podstawianie poleceń, zmienne i struktury kontrolne do testowania warunków i iteracji.
Oryginalną powłoką uniksową była powłoka Bourne'a , sh, napisana przez Stephena Bourne'a w Bell Labs. Potem pojawiła się powłoka C , napisana przez Billa Joya z Berkeley, od czasu aktualizacji jako tcsh . Inne powłoki obejmują powłokę Korna , ksh, napisaną przez Davida Korna, również w Bell Labs, oraz bash , „powłokę Bourne'a”, napisaną przez Briana Foxa dla projektu GNU jako darmowy zamiennik sh.
Dzisiaj bash jest prawdopodobnie najpopularniejszą powłoką uniksową, ale wiele osób (w tym ja) nadal preferuje powłokę C opartą na (jak niektórym z nas wydaje się) jej ładniejszej składni. Zasadniczo jest to kwestia gustu, dlatego polecam przeczytanie artykułów w Wikipedii, które podłączyłem, aby pomóc Ci zacząć.
źródło
Termin „shell” jest dobrze nazwany. Jest to dosłownie powłoka wokół systemu operacyjnego, pozwalająca użytkownikowi na interakcję z komputerem. Kiedy został pierwotnie opracowany, było bardzo mało graficznych interfejsów użytkownika (bez okien :(). Wszystko zostało zrobione z linii poleceń. Ale nawet linia poleceń potrzebowała miejsca do życia. Żył i nadal działa w powłoce .
Mówiąc prościej, aby wiersz poleceń był użyteczny, potrzebował instrukcji, które mógłby wywołać. Tak więc programy zostały uruchomione w powłoce, aby można było z niej korzystać z wiersza poleceń. Programy były ściśle zgrupowane w swoich własnych pakietach i miały współpracować. Obejmują one programy takie jak „ls” i „grep”, „ps”, „sed” itp. Zawierają także polecenia przekierowania plików, takie jak „>” i „<” oraz potoki („|”). Co ważniejsze, obejmują one także konstrukcje programistyczne, takie jak operacje warunkowe (jeśli zatem, dla pętli, podczas gdy pętle, sposoby sprawdzania statusu zwróconego po uruchomieniu instrukcji (np. Jeśli uruchomisz „ls”, czy coś znalazło?), Rzecz tak). Są to podstawy bardziej złożonych skryptów wiersza poleceń (powłoki),
Kiedy ktoś używa terminu „Bash Shell”, mówi o interprecie wiersza poleceń o nazwie „Bash”, który działa w powłoce O / S. Można by pomyśleć, że jest to skrót od „Bash Shell Interpreter”. Istnieją inni tłumacze, tacy jak Bourne (Bash to „nowa i ulepszona powłoka Bourne'a, w skrócie Bourne Again Shell”). Istnieje również C-Shell, K-Shell (ulubiony przez wielu, którzy piszą złożone skrypty powłoki) oraz inne warianty GNU. Z biegiem lat zwyczajem stało się odwoływanie się do konkretnego interpretera wiersza poleceń, którego używasz jako powłoki, ponieważ jednego nie można używać bez drugiego. Ale w rzeczywistości są one różne.
Co do tego, dlaczego są oni właściwie znani jako interpretery wiersza poleceń, a nie jako rzeczywista powłoka: dzieje się tak dlatego, że żyją w powłoce i interpretują wszystkie polecenia tak, jakby działały w programie. A powłoka nie dba o tłumacza, który w nim działa, o ile spełnia ona odpowiednie standardy.
A dlaczego nazywają się tłumaczami, to dlatego, że są naprawdę tłumaczami. Nawet jeśli nie uruchamiasz jawnie skryptu (a skrypt jest tak naprawdę plikiem tekstowym poleceń, które tworzysz, abyś mógł wykonywać te same polecenia w kółko, bez konieczności ich ponownego wpisywania). Na przykład weź pokorne polecenie „ls”. Po uruchomieniu zwraca listę plików. Ale to, jak działa, jest ważniejsze dla twojego pytania: w rzeczywistości działa w kontekście interpretera wiersza poleceń, nawet jeśli po prostu uruchomisz coś, co wydaje się prostym, jednorazowym poleceniem. Oznacza to, że działa jak oświadczenie w ramach większego programu. Działa tak, jakby znajdował się w pliku skryptu powłoki, ale tak naprawdę nie znajduje się w pliku skryptu powłoki. Anonimowy plik skryptu powłoki.
Wszystko, co uruchamiasz w wierszu poleceń, ma to wspólnego (niezależnie od tego, czy jest to pojedyncze polecenie, takie jak „ls”, czy plik skryptowy pełen poleceń, iteratorów i instrukcji warunkowych): wszystko jest przetwarzane przez interpreter wiersza poleceń; czy to Bash, C-Shell, K-Shell (domyślnie w AIX btw).
Aby zobaczyć, co mam na myśli, wykonaj „test” katalogu:
Wpisz go i uruchom następujące polecenia
Otrzymasz odpowiedź w rodzaju „brak takiego pliku lub katalogu”. Teraz wpisz polecenie
($? mówi, powiedz mi, co znalazłeś w mowie zaszyfrowanego komputera.) Powinieneś zobaczyć, że zwraca liczbę (powinna być) „2”. To jest kod powrotu z grep, który oznacza „brak takiego pliku lub katalogu”. Teraz uruchom następujące polecenie:
Zobaczysz plik „hello.txt” zwrócony z początkowej komendy grep i powinieneś teraz zobaczyć „echo $?” zwraca liczbę „0”, co oznacza, że faktycznie coś znalazło.
Nawet jeśli te pozornie jednorazowe polecenia są uruchamiane, interpreter wiersza poleceń działa tak, jakby był częścią większego programu i śledzi ich zwracane wartości. Dlatego jeśli zapomnisz * na końcu polecenia grep, nie powróci. Wie, że instrukcja jest niekompletna i oczekuje więcej danych wejściowych. W końcu możesz poprosić go o pomijanie wyników jakiejś pętli, której pisanie i uruchamianie w wierszu poleceń jest całkowicie legalne.
Najważniejsze jest to, że powłoka jest powłoką, a interpreter (bez względu na to, jakiej używasz, „Bash”, k-shell itp.) Jest inny. Ale często są one używane zamiennie, ponieważ w dowolnym momencie są całkowicie ze sobą powiązane.
źródło
Shell to tekstowy interfejs użytkownika.
Bash jest rodzajem powłoki.
źródło
bash
należy doshell
rodziny, ale jest mnóstwo innych muszli.Na przykład na Minix3 jest
ash
powłoka, która nie obsługuje tablic asocjacyjnych takich jakbash4
.Standard POSIX to próba stworzenia przenośnego API między różnymi powłokami i systemami operacyjnymi.
Zobacz http://en.wikipedia.org/wiki/Unix_shell#Bourne_shell_compatible
źródło
bash
jest jedną z wielu istniejących powłok.Wszystkie muszle mają swoje podobieństwa i różnice. Na przykład skrypt napisany w języku bash może być w pełni lub w dużej mierze kompatybilny z inną powłoką (na przykład zsh ).
Ze względu na to, że
bash
jest bardzo rozpowszechniony, często sugeruje się, że skrypt jest z nim zgodny.Jeśli chcesz kupić książkę, kup ją napisaną specjalnie dla powłoki, której zamierzasz użyć. Byłoby jednak dobrym pomysłem zapoznać się z ich różnicami przed wydaniem pieniędzy.
źródło