For the past decade, Apple has avoided updating the Bourne Again SHell, better known as bash, for its desktop operating system due to the iGiant's distaste for the GPLv3 license attached to the command interpreter.
Now, the fondleslab slinger has finally made the fancier Z shell, zsh, the default login and interactive shell in its forthcoming macOS 10.15 aka Catalina.
"zsh is highly compatible with the Bourne shell (sh) and mostly compatible with bash, with some differences," Apple explained in a support document posted on Monday in conjunction with the announcement of macOS Catalina, which ships this fall.
The Z shell is installed on current macOS versions, but isn't available by default. It can made the default on current Macs through Users & Groups in System Preferences. Unlock the Users & Groups menu to make changes and then control-click on the applicable user to bring up the Advanced Options menu, which provides a Login shell setting.
There's another option too: the macOS Terminal app, which interfaces the user with the shell, can be made to point at a command interpreter other than the user default through its Preferences menu.
It seems most Linux distributions ship with bash as the default shell, which ensures it is widely used. However, Apple, which has long had a frosty relationship with the GPL, has been reducing its use of GPL-covered code for years. In 2011, Apple removed the open-source Samba software from OS X 10.7 Lion Server because of its move to the GPLv3 license. It took similar steps to move away from GCC for the same reason.
There's nothing wrong with bash – it remains quite popular – but it dates back to 1989 and quite a few competing shells now offer a more feature-laden alternative. Beyond zsh, there's ksh, tcsh, and fish, to name a few.
Patch Bash NOW: 'Shellshock' bug blasts OS X, Linux systems wide openREAD MORE
Bash has been the default shell since OS X 10.3 Panther debuted in 2003. In OS X 10.2 Jaguar, the default shell was tcsh. The latest commercial release of Apple's desktop operating system, macOS 10.14 Mojave, ships with GNU bash, version 3.2.57(1), which remains under the GPLv2 license. Version 3.2 of bash debuted in 2006. The shift to GPLv3, introduced in 2007, occurred in 2009 with the release of bash version 4.0.
Companies tend to dislike GPLv3 because it prohibits GPLv3 software from being used on systems that prevent users from installing their own software (e.g. Apple TV) and because it includes patent clauses that limit potential infringement claims.
"Companies with important patent portfolios should be wary of GPLv3's patent license, especially if they employ open source project contributors," warns a 2008 paper about the GPLv3 from the Berkeley Technology Law Journal.
Users of Apple devices are free to install a more recent version of bash – currently at 5.0 – if they choose to do so. But Apple evidently wants to move people toward zsh.
Subject to an MIT-style license, zsh is mostly compatible with bash but adds a number of useful features. Out of the box, it offers spelling correction, programmable command-line completion, loadable modules that extend functionality, the ability to emulate other shells, global aliases, and a variety of other appealing features like themes.
Apple's disdain of bash aside, you may find something you like about zsh. ®