Walter runs Bash 5.2.21 (Ubuntu 24.04). The latest release is 5.3. After review, Daniel determined that 5.2 is perfectly acceptable โ the minimum requirement is Bash 4.0+ fleet-wide.
The concern: some machines might be running Bash 3.2 (the ancient macOS-era version stuck on GPLv2). Bash 3.2 lacks associative arrays, mapfile, readarray, ** globbing, and many other features we use. If any machine is on 3.2, that's the real problem.
Secondary concern: all our scripts use #!/bin/bash which hardcodes the path. Should be #!/usr/bin/env bash so it finds the best available bash.
| Bash Version | Status | Action |
|---|---|---|
| 3.2 or below | Critical โ upgrade immediately | Install bash 4+ via apt or compile from source |
| 4.x | Acceptable but curious | Investigate why not 5.x (old distro? manual install?) |
| 5.x | Good โ no action needed | Just fix shebang |
bash --version. Report a table of every machine's bash version.
sudo apt update && sudo apt install bash should bring it to 5.x.
#!/bin/bash and change to #!/usr/bin/env bash.
grep -rl '#!/bin/bash' /home/daniel/bin/ | head -20
| Machine | Host | Expected OS | Expected Bash |
|---|---|---|---|
| ๐ฆ Walter | walter.1.foo | Ubuntu 24.04 | 5.2.21 โ (confirmed) |
| ๐ฆ Walter Jr | walter-jr.1.foo | Debian 12 | TBD |
| ๐ฆ Vault | vault.1.foo | Debian/Ubuntu | TBD |
| ๐ธ Matilda | matilda.1.foo | Debian 12 | TBD |
| ๐ Foreman | foreman.1.foo | Debian/Ubuntu | TBD |
| ๐ Jamie | jamie.1.foo | Debian/Ubuntu | TBD |
| ๐ป Ghost Jr | ghost-jr.1.foo | Debian/Ubuntu | TBD |
| ๐ฑ Amy | amy.1.foo | Debian/Ubuntu | TBD (stopped) |
| ๐ฑ๐ฎ๐ฑ Amy Israel | amy-israel.1.foo | Debian/Ubuntu | TBD (stopped) |
| ๐ Captain Kirk | captain-kirk.1.foo | Debian/Ubuntu | TBD (stopped) |
| ๐ค RMS | rms.1.foo | Debian/Ubuntu | TBD (stopped) |
Note: All GCP VMs run Debian or Ubuntu. These distros ship Bash 5.x for years now. The probability of finding Bash 3.2 is very low โ but the audit confirms it rather than assuming it.
We are NOT compiling Bash 5.3 from source. 5.2 is fine. The original v1 plan explored this but Daniel determined it's unnecessary overhead for minimal gain.
We are NOT replacing /usr/bin/bash on any machine. The system bash belongs to the package manager.
We are only changing shebangs in OUR scripts (under /home/daniel/), not system scripts.
Shebang change from #!/bin/bash to #!/usr/bin/env bash โ extremely low risk. If /usr/bin/env doesn't exist (it does on every modern Linux), the script would fail to start. But env is part of coreutils, present everywhere.
SSH unreachable machines (Amy, RMS, Kirk, etc.) can't be audited until they're started. The plan covers running machines first, stopped machines whenever they're next started.
โ Every running machine confirmed Bash 4+
โ No machine on Bash 3.2
โ All scripts under /home/daniel/bin/ use #!/usr/bin/env bash
โ Results documented in this plan (status updated to COMPLETE)