Dopuszczanie do linuksowych serwerów programistów korzystających z macOS-a mogło mieć czasem złe skutki. Wszystko za sprawą archaicznej wersji powłoki bash, będącej domyślnym interpreterem poleceń systemu Apple’a od czasów systemu OS X 10.3 Panther. Podczas gdy w nowych linuksowych systemach możemy korzystać z basha 4.4 lub nawet 5, programiści z MacBookami i najnowszym systemem 10.14 Mojave skazani są do tej pory na basha oznaczonego numerkiem 3.2.57. Nie mogło być inaczej – Apple nie mogło po prostu przełknąć nowej licencji, na której od 2007 roku oferowane są nowe wersje basha. Ale nie szkodzi. Nowy macOS 10.15 Catalina przyniesie fanom Maców nową powłokę, zsh, i to w jej aktualnej wersji.
Bash (Bourne Again Shell) nie był z macOS-em od samego początku. Apple początkowo w swoich uniksowych systemach korzystało z powłoki tcsh. Przejście na basha podyktowane było jego prostotą i wyższą popularnością. Licencja GPLv2 była też dla firmy z Cupertino jakoś jeszcze do zaakceptowania. Gdy jednak w 2007 roku bash został przepisany i przeniesiony na licencję GPLv3, zdecydowano, że jej zapisów z korporacyjną polityką pogodzić się nie da.
GPLv3: postrach korporacji
Dla Apple problemem były dwie rzeczy. Po pierwsze wolnościowa licencja GPLv3 zakazuje wykorzystywania licencjonowanego tak oprogramowania na niewolnych systemach, takich na których użytkownicy nie mogą sami swobodnie instalować swojego oprogramowania (np. iOS). Po drugie, chodzi o kwestię zastrzeżeń patentowych, które w praktyce uniemożliwiają firmom rozpowszechniającym poprzez swoje produkty oprogramowanie na licencji GPLv3 skuteczną ochronę sądową swojego patentowego portfolio.
Gdy więc kolejne projekty wolnego oprogramowania przechodziły na nowszą wersję GPL, Apple albo się ich pozbywało z macOS-a – tak się stało z kompilatorem GCC i serwerem protokołu SMB Samba – albo też pozostawało przy starych wersjach licencjonowanych na GPLv2.
Oczywiście zaawansowani użytkownicy mogli zawsze sobie to zmienić – zainstalować w systemie nowszą wersję samodzielnie, korzystając z niezależnych repozytoriów oprogramowania dla macOS-a. W wypadku basha można było nawet ustawić nowsze wersje jako domyślne, w menu preferencji aplikacji terminalowej. Robił to jednak mało kto – typowy korzystający z macOS-a deweloper po wpisaniu bash --version
mógł od lat zobaczyć zazwyczaj cyferki 3.2. Zmuszało to twórców różnego rodzaju bashowych skryptów do kombinowania, nie mogli oni korzystać z możliwości oferowanych od wersji 4.
Z Shell jest taki, jaki chcesz by był
Wraz z nowym macOS-em czas jednak na nową powłokę. Będzie nią zsh (Z Shell), następca klasycznej powłoki Korn Shell. To całkiem nowoczesne rozwiązanie, pozwalające na edycję wiersza poleceń, programowalne dopełnianie poleceń, zawierające obsługę funkcji z automatycznym ładowaniem, przeglądanie historii poleceń i oferujące korekcję pisowni.
Zsh daje też ogromne możliwości personalizacji – na stronie Oh My Zsh znajdziemy setki wtyczek i motywów, opracowanych przez społeczność liczącą ponad tysiąc programistów i administratorów. Teraz, gdy Zsh stanie się domyślnym interpreterem poleceń macOS-a, ich liczba może tylko wzrosnąć.
Basha nie ma co żałować. Nie jest to zła powłoka, ale Zsh jest lepszy… także dla Apple. Udostępniany jest bowiem na analogicznej do MIT licencji, która w niczym nie zagraża interesom firmy z Cupertino. A jak ktoś ma obawy, że nowa powłoka okaże się zbyt obca, to powinien zacząć od przeczytania FAQ o Z Shellu.