Dlaczego bash jest domyślną powłoką w większości systemów operacyjnych (Ubuntu, Fedora, OSX itp.)? Dlaczego wielu zaawansowanych użytkowników korzysta głównie z zsh? Jeśli jest tak dobry, dlaczego nie jest domyślny?
Używam obu Nie widzę różnicy, bo wszystkie moje zadania są proste :)
bash
default
zsh
history-of-ubuntu
Talal
źródło
źródło
ksh
ją najbardziej zaawansowani użytkownicy , to prawdą jest również to, że większość ludzi używa innej powłoki, a to samo w sobie wyjaśniałoby, dlaczegoksh
nie jest domyślną powłoką. Jednak nie sądzę, że to jest powód, poczekajmy na jakąś zabójczą odpowiedź, która na pewno otrzyma to pytanie.Odpowiedzi:
Przeczytałem o tym trochę i wniosek wydaje się być taki, że jest to domyślna powłoka GNU (używana przez większość systemów operacyjnych opartych na Linuksie), a zatem po prostu jest dostarczana jako część GNU, a jednocześnie ma 20 lat rozwoju, dzięki czemu stabilny i dobrze zaokrąglony, jest po prostu najlepszy wszechstronny, spełniający potrzeby wszystkich oprócz najbardziej zaawansowanych użytkowników.
Aby dowiedzieć się więcej, przeczytaj Dlaczego bash jest standardem w Linuksie? (to samo pytanie w systemach Unix i Linux).
Aby dodać nieco więcej, istnieje wiele innych powłok do wypróbowania, jeśli jesteś zainteresowany, oto kilka z tej odpowiedzi :
źródło
Bourne powłoki ( SH powrotem na dzień) branży AT & T Unix zostało udoskonalone i zastąpiona przez Korn, KSH . ksh również wyszedł z AT&T Bell Labs i nie był GPL (aktualna wersja to Eclipse Public License). Powłoka C, csh wyszła z Berxeyowskiej wersji Unixa i nie była również GPL (licencja BSD) i również używała innej składni niż sh. Z-shell, zsh to ulepszenie sh, ale nie GPL (licencja podobna do MIT). Bash był ulepszeniem sh, używał GPL i GNU. Tylko na samej licencji Bash byłby prawdopodobnie wyborem dla systemu operacyjnego GPL. Zwłaszcza, że skorupa stanowi rdzeń dystrybucji.
Ale Bash był także projektem GNU, który, jak sądzę, zapewnia bardziej aktywny rozwój i sprawia, że wkład jest łatwiejszy niż starszego produktu z Berkeley Unix lub AT&T Unix. Można bardzo dobrze uzasadnić, że zsh jest i był lepszą powłoką niż Bash, ale niewystarczająco, aby przezwyciężyć inną licencję i status projektu spoza GNU.
Kiedy dystrybucje Linuksa pojawiały się po raz pierwszy i wybierały domyślną powłokę (od początku do połowy lat 90.), nie było github (2008) ani nawet SourceForge (1999). W tym momencie myślę, że projekty GNU miały prawdziwą przewagę nad projektami spoza GNU, ponieważ zostały zauważone, a także przyciągnęły nowych programistów. Dystrybutorzy mogliby więc spojrzeć na powłokę Z jako lepszą, ale także oczekiwać, że Bash uzyska dobre wsparcie i konserwację w przyszłości, a także doda więcej funkcji, co pozwoli mu dogonić Zsha.
Teraz, gdy Bash ma lata domyślnego statusu, stał się standardem defacto, z książkami o nim napisanymi. Istnieje jedna książka, która obejmuje zarówno Bash, jak i Z-shell , ale żadna książka nie obejmuje wyłącznie Bash.
W tym momencie, jeśli dystrybucje miałyby zmienić ustawienia domyślne dla aktualizacji istniejącego systemu, zepsułoby to konfiguracje, ponieważ niektóre pliki inicjujące mają różne nazwy (np. .Bashrc kontra .zshrc), a zawartość plików może mieć niezgodną składnię. Dlatego bardzo niechętnie by to zrobili, pozostawiając nowe pliki do pobrania domyślnie zsh i uaktualnienia, aby mieć bash. Dwa różne ustawienia domyślne dla tej samej dystrybucji to coś, czego prawdopodobnie nie chcą obsługiwać, a użytkownicy / firmy również nie chcą sobie z tym poradzić.
źródło
Wszystkie języki powłoki Unix są brzydkie. Niektóre szczególnie (
csh
), niektóre może nieco mniej (ksh
? Właściwie nie wiem), ale tak naprawdę, jeśli chodzi o aspekty takie jak czytelność i sztywność w dużych projektach, żaden z nich nie może zbliżyć się do dobrze zaprojektowanych języków ogólnego przeznaczenia, takich jak Python, C # lub Haskell. Tak więc, jeśli chcesz czegoś solidnego, nigdy nie wybierzesz żadnego z aromatów muszli.Wybieraj je, gdy chcesz szybko wykonać proste czynności. W tym celu potrzebujesz:
sh
kompatybilność jest tutaj dużym plusem i po raz kolejny im bardziej popularny, tym lepiej.Widzicie więc, popularność jest bardziej istotna w tych językach powłoki niż w przypadku języków ogólnego przeznaczenia. Dlatego nawet jeśli
ksh
jest trochę „lepszy” jako język sam w sobie, nie ma tak naprawdę wielkiej przewagi w używaniu go, jeślibash
jest tylko nieco bardziej popularny (co było w odpowiednim sektorze, ponieważ po raz pierwszy wybrano go jako domyślny dla GNU).Ludzie, którzy dokonują zmiany, są świadomi tego i mają wystarczające doświadczenie, aby łatwo poradzić sobie z przełączaniem na ulubioną powłokę. OTOH, nowicjusz, który jest zmuszony do pracy z mniej popularną powłoką, zostanie szybko zdezorientowany, jeśli poprosi internet o coś i to nie zadziała. Dlatego każda dystrybucja skierowana nie tylko do weteranów uniksowych wiąże się z pewnym ryzykiem, jeśli stanowi coś innego niż
bash
standard, krok, z którego skorzystałoby stosunkowo niewiele osób (i tylko trochę).źródło
źródło
„Masa krytyczna” to główna odpowiedź, IMO. Bash służy nie tylko do pracy z wierszem poleceń, ale także do tworzenia skryptów i jest tam ogromna liczba skryptów Bash. Bez względu na to, o ile lepsza jest teraz alternatywa dla interakcji, potrzeba „plug and play” tych skryptów przeważa nad takimi zaletami. Jako taka, jedyną powłoką, która może teraz realistycznie odeprzeć Bash, jest ta, która jest całkowicie kompatybilna wstecz i najbardziej prawdopodobnym kandydatem do tego jest ... następna wersja Bash.
źródło