Jaką powłokę wybrać Bash,Zsh czy coś innego?
Co byśmy polecali z powłok dla początkujących i/lub zaaawansowanych użytkowników ?
Dla początkującego? Cokolwiek. Dalczego? Bo reszta jest kwestią przyzwyczajenia.
Dla początkujących: Bourne shell. To ,,ojciec wszystkich shelli" (pomijając jego, dawno już nieużywanego, poprzednika) i domyślna powłoka na większości Unixów. Skryptami Bourne shella można wykonać niemal wszystko, co potrafią jego następcy. Zdecydowanie polecam zaczynać od niego, a nie bardziej złożonych powłok, jak Korn shell czy Bash.
Chyba że jesteś programistą i znasz język C. Wtedy warto pójść w C-shell. Szybciej ogarniesz jego składnię, która jest właśnie podobna do C. Ale uwaga, wiele rzeczy w csh wykonuje się odmiennie niż w Bourne shell, więc późniejsza przesiadka na którąś z wyżej wymienionych powłok, będzie oznaczać dodatkową naukę. Np. edycja zmiennej w Bourne shellu:
export LC_ALL=C
to samo w C-shellu:
setenv LC_ALL C
Dla zaawansowanych: Korn shell. Jak dotąd, stworzyłem w nim 1 skrypt, którego za Chiny nie mogłem zrobić w Bourne shellu (nie wiem jak by było z C-shell, jeszcze nie znałem go). Jednocześnie nie widzę przeszkód, aby zaawansowany użytkownik wciąż używał Bourne shella. Jednym słowem, wszystko zależy od tego, jakie skrypty piszesz. Bo do codziennego użytku, czyli klepania w terminalu komend mount, zfs czy init, każdy nada się równie dobrze.
Standardem na Linuxie jest bash, więc początkujący użytkownik Linuxa ucząc się czegoś innego tylko utrudni sobie życie. Tu nie ma o czym dyskutować... 😉 Inna sprawa, że (1) zupełny początkujący raczej rzadko pisze własne skrypty i (2) w bash w moim odczuciu dość ciężko się coś pisze. Skrypty raczej łatwiej jest pisać w polskim języku programowania
Amber opcjonalnie kompilowanym do bash. Prawdę powiedziawszy ja przestałem pisać skrypty, gdyż najpierw zaczęła za mnie je pisać sztuczna inteligencja, a później uznałem, że skoro już je za mnie pisze, niech pisze od razu w Rust zamiast w ślimaczym Bash. Jak teraz będę chciał jakiś skrypt, raczej niż pisać skrypt w bash lub czymkolwiek skryptowym, zagadam do Claude, by mi napisał odpowiedni program w Rust wykonujący dane operacje na plikach, itd. Poczekam kilkanaście sekund na wynik, zerknę, czy kod wygląda w porządku, a potem go skompiluję.
Bash to powłoka używana głównie w GNU/Linuxie. Rzadko jest domyślna na innych systemach uniksowych, a niektóre z nich nie posiadają jej nawet w opcji. Przywiązując się do Basha, a zwłaszcza zaczynając od niego, skazujemy się na problemy przy pierwszej zmianie systemu.
Co innego Bourne shell. Warto przyswoić go, wtedy możemy swobodnie przesiadać się pomiędzy BSD, GNU i Unixem SVR. Nasze skrypty, napisane dla sh, będą prawidłowo wykonane i pod Korn shellem, i powinny także pod Bashem. W drugą stronę to już nie zadziała.
Poza Linuxem, Bash nie cieszy się dobrą opinią i nie jest szczególnie lubiany. W środowiskach enterprise, Korn shell to standard.
Pisanie prostych skryptów w języku wysokiego poziomu, a następnie kompilacja, to dla mnie jakaś abstrakcja. Nie tylko dlatego, że nie jestem programistą, toteż jest to poza moimi możliwościami. Zwyczajnie, od zawsze stosuję najprosztszą powłokę, niezbędną dla danego skryptu - zadania które muszę wykonać. Czyli w Windows to jest CMD, a dopiero jeśli czegoś nie potrafi, sięgam po PowerShell. Podobnie w Unixie, używam Bourne lub C-Shella, a w razie czego Korn czeka w zanadrzu. Takie podejście dobrze sprawdza się, nie ma powodu aby komplikować proste rzeczy.
Cytat: microsofter w Czerwiec 20, 2025, 12:38:02 AMBash to powłoka używana głównie w GNU/Linuxie. Rzadko jest domyślna na innych systemach uniksowych, a niektóre z nich nie posiadają jej nawet w opcji. Przywiązując się do Basha, a zwłaszcza zaczynając od niego, skazujemy się na problemy przy pierwszej zmianie systemu.
(1) Jak widać w tytule wątku, pytanie jest o powłokę dla Linuxa. (2) Mimo całej naszej sympatii do tych systemów, uczciwe będzie stwierdzenie, że zastosowanie *BSD i innych Unixów jest dość marginalne w porównaniu do Linuxa i raczej jeden na dziesiątki tysięcy użytkowników przesiadki Linux -> Unix w trakcie swojego życia dokona. Chyba, że mówimy o macOS.
Cytat: microsofter w Czerwiec 20, 2025, 12:38:02 AMPisanie prostych skryptów w języku wysokiego poziomu, a następnie kompilacja, to dla mnie jakaś abstrakcja. Nie tylko dlatego, że nie jestem programistą, toteż jest to poza moimi możliwościami. Zwyczajnie, od zawsze stosuję najprosztszą powłokę, niezbędną dla danego skryptu - zadania które muszę wykonać. Czyli w Windows to jest CMD, a dopiero jeśli czegoś nie potrafi, sięgam po PowerShell. Podobnie w Unixie, używam Bourne lub C-Shella, a w razie czego Korn czeka w zanadrzu. Takie podejście dobrze sprawdza się, nie ma powodu aby komplikować proste rzeczy.
Na myśli chyba masz języki niskiego poziomu, a nie wysokiego poziomu, a właściwie to średniego (niskiego jest Assembly). Owszem uchodzą ze średnio bardziej złożone, ale skoro w dzisiejszych czasach kod pisze nie człowiek, a sztuczna inteligencja, argument, że któryś z języków "jest trudny", odpada. Mogę poprosić np. Claude lub ChatGPT by mi napisały kod w jednym z conajmniej kilkudziesięciu języków i bez różnicy, czy język jest prosty, czy złożony, zajmie to sekundy...
Cytat: Piotr_1988 w Czerwiec 20, 2025, 01:15:43 AM(1) Jak widać w tytule wątku, pytanie jest o powłokę dla Linuxa.
Tutuł nie był dla mnie jednoznaczny, gdyż autor wcześniej zakładał dwuznaczne tematy
https://forum.linuxiarze.pl/index.php/topic,5854.msg36693.html, oraz używał słowa Linux w niewłaściwym kontekście
https://forum.linuxiarze.pl/index.php/topic,5514.msg35184.html. Dlatego wypowiedziałem się z punktu widzenia całości systemów uniksowych, a nie stricte GNU/Linuxa.
Z AI masz rację. Wieczorem wrzuciłem do Copilota mój skrypt z Korn shella, z prośbą na przerobienie go pod Bourne shell i C-Shell. Okazuje się, że jest to możliwe, a nawet łatwe.
Wracając do Basha: czy poza faktem że to domyślna powłoka na GNU, są jakieś merytoryczne powody aby go promować? Chyba nie. Ksh93 potrafi to samo. A nawet więcej, gdyż integruje składnię z C-Shell, czego nie przetrawi Bash.
Cytat: microsofter w Czerwiec 20, 2025, 11:44:07 AMCytat: Piotr_1988 w Czerwiec 20, 2025, 01:15:43 AM(1) Jak widać w tytule wątku, pytanie jest o powłokę dla Linuxa.
Tutuł nie był dla mnie jednoznaczny, gdyż autor wcześniej zakładał dwuznaczne tematy https://forum.linuxiarze.pl/index.php/topic,5854.msg36693.html, oraz używał słowa Linux w niewłaściwym kontekście https://forum.linuxiarze.pl/index.php/topic,5514.msg35184.html. Dlatego wypowiedziałem się z punktu widzenia całości systemów uniksowych, a nie stricte GNU/Linuxa.
Czyli zdobywam sławę i moje posty są poczytne.
Co do powłok co sądzisz o powłoce fish.
To inna alternatywa.
Cytat: microsofter w Czerwiec 20, 2025, 11:44:07 AMCytat: Piotr_1988 w Czerwiec 20, 2025, 01:15:43 AM(1) Jak widać w tytule wątku, pytanie jest o powłokę dla Linuxa.
Tutuł nie był dla mnie jednoznaczny, gdyż autor wcześniej zakładał dwuznaczne tematy https://forum.linuxiarze.pl/index.php/topic,5854.msg36693.html, oraz używał słowa Linux w niewłaściwym kontekście https://forum.linuxiarze.pl/index.php/topic,5514.msg35184.html. Dlatego wypowiedziałem się z punktu widzenia całości systemów uniksowych, a nie stricte GNU/Linuxa.
Mniejsza o tytuł. Chodzi mi tylko o to, że widząc argument "z bash trudniej jest się przesiaść na Unixa", pierwsze co myślę to, "a ile osób w swoim życiu będzie sie chciało przesiąść na tego Unixa!?".
Piszę to nie jako zatwardziały zwolennik Linuxa, a jako miłośnik systemów unixopodobnych ogółem.
Cytat: microsofter w Czerwiec 20, 2025, 11:44:07 AMZ AI masz rację. Wieczorem wrzuciłem do Copilota mój skrypt z Korn shella, z prośbą na przerobienie go pod Bourne shell i C-Shell. Okazuje się, że jest to możliwe, a nawet łatwe.
Z całym szacuneczkiem myślę, że z tym, że programowanie jest "poza Twoimi możliwościami", "nie jesteś programistą", itp., itd., przesadzasz. Chyba przy kilku okazjach wracałeś do tematu różnych powłok unixowych, znasz różnice pomiędzy tymi powłokami, twierdzisz, że piszesz w nich własne skrypty (nie wiem, na ile złożone, ale jednak), więc jak dla mnie
jesteś programistą - logiczne, oczywiste.
Jeśli piszesz skrypty w Korn shell to -przy założeniu, że nigdy nie miałeś kontaktu- język wysokopoziomowy interpretowany typu Lua lub kompilowany typu Fortran opanujesz w podstawach w kilka godzin (w Fortranie główna nowość jak taka, że deklarujesz typy zmiennych), a po kilku dniach przyzwyczajenia bardzo możliwe, że sam uznasz, że wygodniej jest pisać w Lua lub Fortranie niż w Korn shell. To raz.
A dwa, w dzisiejszych czasach kodu nie pisze człowiek, lecz sztuczna inteligencja, więc żeby zostać programistą (nie mówię zawodowym, a tak dla siebie), wiele nie trzeba. Kilka lat temu bym się zgodził z Tobą w tym, że nie ma sensu przekombinowywać, a skrypty pisze się w typowych dla danego systemu językach skryptowych. Teraz żyjemy w innym świecie. Oczywiście nie wykluczam, że są jacyś hardkorowi linuxiarze na wyginięciu, którzy ze względów ideologicznych lub z przyzwyczajenia lub zwyczajnie dla zabawy wciąż sami piszą skrypty. Mi jest sybciej i łatwiej otworzyć okno z Claude i opisać własnymi słowami w języku polskim, co potrzebuję, co program ma robić, itd. A skoro dostaję po paru sekundach gotowca, to już wolę, by był on w języku kompilowanym i śmigał zamiast się ślimaczyć. W specyficznych sytuacjach chcę sam linijka po linijce napisać kod, ale są to sytuacje odległe od typowych zastosowań skryptowych.
Cytat: microsofter w Czerwiec 20, 2025, 11:44:07 AMWracając do Basha: czy poza faktem że to domyślna powłoka na GNU, są jakieś merytoryczne powody aby go promować? Chyba nie. Ksh93 potrafi to samo. A nawet więcej, gdyż integruje składnię z C-Shell, czego nie przetrawi Bash.
Nie, chyba nie ma.
Pisanie skryptów (które np. usuwają snapshoty ZFS gdy kończy się wolne miejsce, robią backup skrzynki pocztowej i wysyłają na serwer, albo zamykają system gdy długo pracuje na UPS) jest dla mnie naturalną kontynuacją tworzenia plików wsadowych z DOSa. Bo właśnie na nich wychowałem się. Natomiast do nauki tworzenia aplikacji, nigdy nawet nie przymierzałem się. Ostatnio mam tak mało czasu, że ten kierunek samorozwoju absolutnie nie wchodzi w rachubę. W każdym razie, dzięki za miłe słowa w postaci wiary w moje zdolności.
Cytat: linux4ever w Czerwiec 20, 2025, 04:58:59 PMmoje posty są poczytne.
Na wstępie przepraszam, że nie będę tak uprzejmy jak przedmówca, lecz z tą poczytnością może być różnie. Kiedy próbowałem czytać bloga EmoMartynki, po kilku zdaniach zaczynały boleć mnie oczy. Albo głowa, albo jedno i drugie. Twoje posty też dają oczom w kość. Ostatnio, jak wpadam na forum i klikam ,,Zobacz najnowsze wiadomości", często przewijam twoje posty i lecę dalej bez czytania ich (jeśli mają więcej niż 2 linijki). Stary, weź proszę formatuj posty po ludzku, bo ledwo można to czytać. Jakbym walczył z zeszytem w 3-linie jakiegoś pierwszoklasisty. Zaczniesz przykładać się, a z pewnością podskoczy ci poczytność, ok?
CytatCo do powłok co sądzisz o powłoce fish.
Nie wypowiem się, nawet jej nie mam. Mam zainstalowane sh, csh, ksh, tcsh, zsh i bash - więc
chyba wystarczy. Na lata.
Nie tylko my dyskutujemy o powłokach. W zeszłym miesiącu ktoś napisał, na innym forum, tak piękny post, że postanowiłem zacytować go:
CytatI'm a former systems administrator and welcome your curiosity about the shell. It's an investigation whose benefits will pay dividends. Learning Bourne shell is a great idea. It's the base paradigm for the "sh-family" of shells like sh, bash, and zsh. Other shells are neat too: ksh (because it gave AT&T Unix a lot of horsepower and fancy features that were ported later to other shells). The "c-family" like tcsh and csh are neat too. Personally, I stick with the "sh-family." I'm just returning to FreeBSD after years of Linux and am enjoying modern sh (which has the majority of features I liked in bash).
Nowicjusze mogą być nieco zdezorientowani, więc wyjaśniam:
sh to jest Bourne shell, czyli ten podstawowy,
csh to C-Shell, obecnie już rzadko używany,
ksh to KornShell,
tcsh to z kolei Tenex C-Shell - nowoczesna, zaawansowana implementacja powłoki ,,C".