4 ms·
Why Bash is like that: Subshells
- tzaman 14y agoThanx for the explanation, however Bash is slowly losing fight with ever more popular ZSH (and oh-my-zsh on top of it)
- yarrel 14y agoDo they still make ZSH? That's nice.
- lucian1900 14y agoI don't think it's losing at all. It's the default on almost every unix, it's a decent shell and it's much simpler than zsh.
- CJefferson 14y agoIs that your experience? Where I work, I know at least 6 people who switched to zsh, and only one who is still there (everyone else is back on bash). The main problem seems to be that the benefits don't outweigh the problems. The two things which did zsh in for me is finding it not installed on remote machines, and not being able to use it to distribute scripts. On the other hand, bash is everywhere and almost as good.
- tzaman 14y agoYes, that's my experience - nearly all my developer mates switched to ZSH (including me) and never looked back. It's perfectly fine that it's not installed on remote machines, it's not that different from bash for basic stuff - in fact I switched from Bash to ZSH on a couple of machines and nobody even noticed. I find it a significant productivity improvement and had no problems at all.
- dfc 14y agoI noticed that the author uses cmd.exe in one of the charts. I wonder if this is a stumbling point for people moving to linux. As it is none of this surprised me or needed any explanation. Why would I want a shell script to change my $CWD after the shell script exits?
- dllthomas 14y ago> Why would I want a shell script to change my $CWD after the shell script exits? If you called the script with the intent that it change your $CWD, obviously. The solution, of course, is to source the script rather than executing it. This is mentioned in the article, but requires an understanding (at least a minimal one) of subshells to get why - which is precisely what the article addresses.
- spudlyo 14y agoWhy would I want a shell script to change my $CWD after the shell script exits? Maybe you wanted a script that would use shortcuts to take you to cumbersome directory paths? I enjoyed this article, even though some of it was review. I didn't know that anything in a pipeline got its own separate subshell in bash, and that different shells behaved differently in that regard. I'm always happy to learn interesting uses for process substitution, and got a kick out of: read sum < <(echo "2+3" | bc) Good stuff.
- dfc 14y agoFor cumbersome directory paths: $ tail -1 ~/.bash_aliases CMBRSM=/opt/var/dont-know-about-FHS/local/etc/cache/config $ cd $CMBRSM Unlike a shell script an alias allows you to: $ ls $CMBRSM/subdirectory $ cat $CMBRSM/file.txt