• Top
  • New

Ask HN: A Bash guide for Posix shell programmers?

by tschumacher on 12/17/2023, 8:19:09 PM with 10 comments
I've been programming POSIX shell for a while and know pretty much all of it (the spec isn't that long: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html). I mostly stayed away from Bash because of the "it runs everywhere" promise of POSIX but recently I've realized that most of the scripts I write will probably always run on machines with Bash installed anyways. I'm looking for a guide that explains Bash features specifically and doesn't go over the whole shell programming basics again. I know some features here and there, e.g. I know that Bash has arrays and a syntax to redirect the contents of a variable to a file, but I'm looking for a comprehensive list of what's possible. Are there any resources you can recommend?

  • by tschumacher on 12/17/2023, 8:57:53 PM

    It turns out the Bash manual groups the Bash specific features into its own chapter [1] and it's a short read and also there are not nearly as many Bash specific features as I thought.

    [1] https://www.gnu.org/software/bash/manual/bash.html#Bash-Feat...

  • by dharmab on 12/18/2023, 1:19:15 AM

    The three most important resources I've used:

    - https://tldp.org/LDP/abs/html/

    - https://mywiki.wooledge.org/BashGuide

    - https://www.shellcheck.net/ (can tell you if there's a Bash-specific replacement for a POSIX mechanic)

    I'll be reading this book over the break: https://fabiensanglard.net/bash/

  • by runjake on 12/18/2023, 4:08:06 PM

    This may not explicitly meet your requirements, but I always find this site handy for quick reference:

    https://learnxinyminutes.com/docs/bash/

    It helpfully also links to the Bash manual:

    https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash....

  • by 1vuio0pswjnm7 on 12/17/2023, 10:14:12 PM

    Bash is slower. That's why a major Linux distribution would switch to NetBSD Almquist sh. On a Linux distribution, generally, bash is always found in the userland. But for scripting (non-interactive use), it's big and slow.

  • by NukedOne on 12/17/2023, 11:35:41 PM

    You might find this useful:

    https://mywiki.wooledge.org/BashGuide

  • by haltist on 12/17/2023, 8:49:55 PM

    Learn Bash the Hard Way by Ian Miell