Live data from Hacker News

Apple makes zsh default shell on macOS

support.apple.com

21–30 of 46 posts

Re: Apple makes zsh default shell on macOS

#21
post #13

Is there any news on if apple is keeping python 2 and/or adding 3 by default?

Scripting Language Runtimes Deprecations Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app. (49764202) Use…

good decision. macos shouldn't come with a python version installed.

Re: Apple makes zsh default shell on macOS

#22
post #12
post #7

Earlier quoted context omitted.

PowerShell is available for Linux & Mac now if you're looking for a structured, object-oriented shell on your Mac.

The issue I have with Powershell is it's full on objected oriented. Personally I'd like something in between. Structured data where the "methods" are the utilities themselves.

Most of the time (though not always) the methods are the utilities. From https://github.com/mikemaccana/powershell-profile/#how-does-...

    $results = @{} 
    ls -recurse -filter "eslint-scope" | foreach { 
        $file = "${PSItem}\package.json" 
        $version = cat $file | convertfrom-json | select -ExpandProperty version 
        $results.Add($file,$version) } 
    echo $results | format-list
You don't have to pipe to 'select', 'where' etc - if you send something to grep or select-string you'll be looking for regexs bash-style.

Re: Apple makes zsh default shell on macOS

#23
post #7

Earlier quoted context omitted.

PowerShell is available for Linux & Mac now if you're looking for a structured, object-oriented shell on your Mac.

Doesn’t really fit into the posix compatibility bucket though. If that hadn’t had been a concern then I imagine fish is the most Mac-like shell out there.

I'm not sure how much POSIX matters anymore. Linux and MacOS determine 'standard' Unix behavior by their market share - I can understand disliking this though.

Re: Apple makes zsh default shell on macOS

#24
post #14

This isn't going to fix the fact that they are shipping a 12 years old version of bash. How many scripts with `#!/usr/bin/env bash` are there out there? Bash is the least worst language for bootstrapping since the alternative is POSIX shell which is even more difficult to get right. The biggest issue is that Bash 3.x arrays don't work well with `set -u`.

Bash went GPLv3. Apple will never ship GPLv3. Persuade bash to relicense and they might consider it. Otherwise, goodbye bash.

I don't fully understand why GPLv3 is not good for Apple. I did try to ask my favourite search engine but I did not find a clear, concise answer.

What is wrong with GPLv3 for Apple and why is it okay in Linux?

Re: Apple makes zsh default shell on macOS

#25
post #20

Earlier quoted context omitted.

Bash went GPLv3. Apple will never ship GPLv3. Persuade bash to relicense and they might consider it. Otherwise, goodbye bash.

Nothing wrong with GPL3. I'd rather use an OS that's willing to ship essential software. The OS is there to serve the user, not make their lives more difficult because of petty licensing concerns.

> Nothing wrong with GPL3 > ... > petty licensing concerns

Apple's lawyers probably think different.

You can install all the GPLv3 software you want on your Mac (Macports and homebrew make it easy). But Apple made it clear that they are not going to ship anything GPLv3 licensed.

Re: Apple makes zsh default shell on macOS

#26

Earlier quoted context omitted.

Bash went GPLv3. Apple will never ship GPLv3. Persuade bash to relicense and they might consider it. Otherwise, goodbye bash.

I don't fully understand why GPLv3 is not good for Apple. I did try to ask my favourite search engine but I did not find a clear, concise answer. What is wrong with GPLv3 for Apple and why is it okay in Linux?

Apple is unwilling to publish the source code of proprietary non-Darwin applications and libraries in their OS. GPLv3 enforces copyleft upon anyone who links to a GPLv3 application. There is a risk that simply including or using bash4+ could infect the system with GPLv3 compliance requirements, forcing Apple to publish their proprietary source code. To Apple, this is likely seen as an unacceptable risk no matter the cost and therefore bash is replaced with zsh. I expect them to warn about removing bash in five or ten years or so.

EDIT: Linux is GPLv2 only and does not accept GPLv3 submissions. It is likely that your question can be restated as “Why are GPLv3 programs able to use syscalls in Linux without infecting the kernel with GPLv3 compliance requirements?”, and this is likely due to the clearly declared syscall exception as noted in their licensing docs:

https://github.com/torvalds/linux/blob/master/Documentation/...

And, Torvalds commented on never-GPLv3 in 2006:

https://www.cnet.com/news/torvalds-no-gpl-3-for-linux/

Re: Apple makes zsh default shell on macOS

#27

Earlier quoted context omitted.

I don't fully understand why GPLv3 is not good for Apple. I did try to ask my favourite search engine but I did not find a clear, concise answer. What is wrong with GPLv3 for Apple and why is it okay in Linux?

Apple is unwilling to publish the source code of proprietary non-Darwin applications and libraries in their OS. GPLv3 enforces copyleft upon anyone who links to a GPLv3 application. There is a risk that simply including or using bash4+ could infect the system with GPLv3 compliance requirements, forcing Apple to publish their proprietary source code. To Apple, this is likely seen as an unacceptable risk no matter the…

cool. there's the answer. is the bash on current systems using GPLv2?

Re: Apple makes zsh default shell on macOS

#28

I thought everyone was using the fish shell on the Mac. :) http://fishshell.com/

I recently moved from bash to fish. Re-training is was easier than I thought, especially not having to tap Ctrl+R every time I'm looking in the history (that one was hard wired). I wrote about my migration here:

https://anisse.astier.eu/bash-to-fish.html

One thing I haven't touched in my article: globbing behaves differently than the default, which means you have to quote your '*.ext' arguments when using find for example. This is fairly well documented: https://fishshell.com/docs/current/index.html#expand

I very rarely move back to bash, so I consider this migration a success :-) If you haven't yet, should try it !

Re: Apple makes zsh default shell on macOS

#29

Earlier quoted context omitted.

Apple is unwilling to publish the source code of proprietary non-Darwin applications and libraries in their OS. GPLv3 enforces copyleft upon anyone who links to a GPLv3 application. There is a risk that simply including or using bash4+ could infect the system with GPLv3 compliance requirements, forcing Apple to publish their proprietary source code. To Apple, this is likely seen as an unacceptable risk no matter the…

cool. there's the answer. is the bash on current systems using GPLv2?

Yes.

Re: Apple makes zsh default shell on macOS

#30

Earlier quoted context omitted.

I don't fully understand why GPLv3 is not good for Apple. I did try to ask my favourite search engine but I did not find a clear, concise answer. What is wrong with GPLv3 for Apple and why is it okay in Linux?

Apple is unwilling to publish the source code of proprietary non-Darwin applications and libraries in their OS. GPLv3 enforces copyleft upon anyone who links to a GPLv3 application. There is a risk that simply including or using bash4+ could infect the system with GPLv3 compliance requirements, forcing Apple to publish their proprietary source code. To Apple, this is likely seen as an unacceptable risk no matter the…

I think it's not only about their proprietary source code, but also about restricting code that can run on your computer. Newer Macs have trusted boot, where the T1 / T2 coprocessor makes sure that system software has not been tampered with before booting. And every release seems to go further into the direction of verifying the code you execute.

As far as I understand it, if the GPLv3 clauses would apply, Apple would have to allow anyone to run their own, modified version of macOS on their computer, meaning Apple would need to provide a way for people to circumvent / disable all the secure boot architecture.

Also, things like "Activation Lock", where Apple requires your Apple ID password to re-install the OS (a theft protection feature) doesn't sound like it would be easy to reconcile with GPLv3.

Post reply on HN