Products · Product
Bash
Raised as a usability problem by 261 people on Hacker News over 16 years (2011–2026), in 234 threads.
No issue was raised by at least 3 people in 3 threads this year.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
Every issue, all time, most people first
Syntax becomes cryptic and hard to read as scripts growUnreviewed
20112026- Unstructured text piping and bash scripting are painful to work with2026-10-28
- Bash syntax becomes cryptic and hard to read as scripts grow2024-12-07
- Bash is clunky with ugly warts that are hard to work with2024-07-17
Obscure error messages hide what went wrong from occasional writersUnreviewed
20112026- Bash command output is fragile to parse, with sharp failure modes and hidden gotchas2024-09-11
- Bash error messages are obscure, so occasional script writers can't understand what went wrong2023-09-12
- Some commands have syntax so obscure they need whole books to learn2023-05-01
Ctrl+R history search is worse at finding past commandsUnreviewed
20112026- Commenter finds the default Ctrl+R history search frustrating and dislikes its experience2023-03-21
- Users tediously press up-arrow through many commands to find a recent one2022-11-29
- Must press Control-R first, then type; can't search from a typed fragment2021-10-20
Subtle concise syntax confuses beginners and infrequent usersUnreviewed
20112026- Infrequent users struggle to remember inconsistent syntax like [ vs [[ and -eq vs =2025-12-06
- Syntax is hard to memorize and easy to make mistakes in2025-01-11
- Concise syntax with many subtle details is very confusing for beginners and infrequent users2024-10-29
Tab completion silently does nothing for non-executable filesUnreviewed
20112026- Tab completion silently does nothing for non-executable files, so users think it is broken2025-08-10
- Tab completion misses most command options, so users can't discover flags without third-party frameworks2024-03-08
- Tab completion on ~-n paths won't expand the directory, unlike variable names2024-01-18
Scripts break when filenames contain spacesUnreviewed
20112026- Handling pathnames with spaces requires arcane quoting knowledge and linters in bash2023-06-20
- Build scripts are unreadable and break on spaces in paths from unescaped characters2021-12-16
- Escaping rules make file names with spaces or quotes hard to handle2021-11-02
Surprising quoting and expansion rules silently break scriptsUnreviewed
20112026- Bash's word splitting, quoting and other features trip people up constantly, even in simple snippets2026-08-07
- Quoting rules are a mess, so scripts are easy to get wrong2022-10-27
- Surprising quoting and expansion rules make scripts easy to break unexpectedly2021-04-04
Can't remember confusing if-statement bracket and quoting rulesUnreviewed
20112026- Finds it very hard to write complex logic in bash2024-03-09
- Bash logic hidden in arcane brace expansion and word splitting rules, hard to read2023-09-11
- Bash's if-condition syntax is error-prone and hard to get right2022-10-27
Glob pattern docs require chaining many man pagesUnreviewed
20112026- Bash manpage is so long that finding anything in it is hard2023-12-22
- Trying to find anything in the bash man page is frustrating2022-10-02
- Shell needs hidden knowledge of globs and flags to write correct code2022-03-29
Easy to mistype nested quotes, escaping, and empty variablesUnreviewed
20112026- Requires wrapping every variable access in "${}", which feels unnatural and breaks flow2024-09-18
- Bash syntax is confusing, needing many backslashes and awkward space-delimited arguments2023-05-18
- Easy to make mistakes with nested quotes, escaping, and empty variables2022-03-26
History lines get edited and lost as shells overwrite each otherUnreviewed
20112026- Sometimes loses part of recent command history when the process is killed2024-01-10
- Bash history truncated to 500 entries, making saving history cumbersome2022-05-03
- History auto-saved on exit, so the user can't control when it is written and loses it2022-01-31
Moving the cursor to a spot in a long line is tediousUnreviewed
20112026- Cursor jumps to line start and overwrites characters when typing multibyte text2020-04-15
- Broken line wrapping misplaces the cursor so user can't see the command being typed2018-05-09
- Moving the cursor to a specific spot in a long typed line is tedious2016-09-13
Array and string expansions like ${#myvar[@]} are unreadableUnreviewed
20112026- Bash array and string expansions like ${#myvar[@]} are unreadable and error-prone2022-02-17
- Default space-splitting of output and typing "$array[@]" everywhere is annoying2019-08-31
- Cryptic special variables and verbose syntax like $@ and $? are confusing2018-05-15
Couldn't get an array membership check working in bashUnreviewed
20112026- Empty array expansion crashes with unbound variable error in older bash, blocking set -u2023-11-23
- Couldn't get a function to check array membership working in bash, despite trying several things2022-03-26
- Bash array declaration and usage syntax is hard to remember, forcing repeated searches2021-04-20
Clever unexplained one-liners make debugging hard when things breakUnreviewed
20112026- No breakpoints or variable inspection, so debugging means piping output to a text file2026-07-15
- Each line takes about 10 minutes to debug without years of experience2022-10-27
- Clever unexplained one-liners make it hard to debug when things break2020-08-23
set -e is silently ignored inside if conditionsUnreviewed
20112026- Command substitution errors are silently swallowed by declare/local assignments, even with set -e2022-10-04
- Set -e behaves confusingly, silently ignored inside if conditions, easy to get wrong2021-07-01
- Set -e makes ordinary statements like ((i++)) kill the script unexpectedly2021-05-16
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Unstructured text piping and bash scripting are painful to work with2026-10-28
- Can't add comments to multiline commands without awkward workarounds2026-10-11
- Bash's word splitting, quoting and other features trip people up constantly, even in simple snippets2026-08-07
- Scripts keep running after errors, so cron jobs fail silently and are hard to debug2026-08-07
- Many non-intuitive behaviors make it easy to get wrong2026-08-07
- Source searches PATH unexpectedly, and when it does is hard to predict2026-08-04
- Shells are enormously frustrating and quirky for practical tasks, requiring expertise and tricks2026-07-27
- Bash has many footguns, especially with spaces and escaping, making mistakes easy2026-07-21
- Footguns make it easy to write scripts that fail, and it must be relearned every time2026-07-21
- No breakpoints or variable inspection, so debugging means piping output to a text file2026-07-15
- State cannot persist across one-shot bash tool calls, forcing repeated imports and exports2026-06-25
- Cryptic shell syntax that the commenter hates and finds hard to explain2026-02-27
- Infrequent users struggle to remember inconsistent syntax like [ vs [[ and -eq vs =2025-12-06
- Can't remember keyboard shortcuts for editing a bash command line2025-10-23
- Shell pipelines are fragile and break on unexpected output, and column cutting is error-prone2025-09-02
- Errexit silently disabled in some contexts, masking errors that occur inside functions and subshells2025-08-25
- Tab completion silently does nothing for non-executable files, so users think it is broken2025-08-10
- Smart completion blocks filename completion where user expects it, breaking muscle memory2025-08-10
- Horrible syntax and footguns make longer scripts error-prone2025-07-21
- Syntax is hard to memorize and easy to make mistakes in2025-01-11
- Program dumps the view into a file called buffered and exits immediately2024-12-21
- Bash syntax becomes cryptic and hard to read as scripts grow2024-12-07
- Bash's interactive-terminal design causes footguns and hampers scripting2024-11-21
- Bash has many footguns that make scripts easy to get wrong2024-11-21
- Pipefail is a huge foot-gun that is hard to use correctly2024-11-02
- Concise syntax with many subtle details is very confusing for beginners and infrequent users2024-10-29
- Array and dictionary syntax is awkward and hard to remember, needing a reference open2024-09-19
- Requires wrapping every variable access in "${}", which feels unnatural and breaks flow2024-09-18
- Script fails halfway through when netstat is missing, with no up-front prerequisite check2024-09-14
- Many footguns: filenames with spaces, leading dashes, empty strings, unmatched globs2024-09-14
- Bash command output is fragile to parse, with sharp failure modes and hidden gotchas2024-09-11
- Users can't remember sed or awk syntax and must look up docs constantly2024-09-11
- Easy to write insecure scripts; needs magic incantations to avoid mistakes2024-08-13
- Bash is clunky with ugly warts that are hard to work with2024-07-17
- Bash scripting is awful to use and keeps getting reached for anyway2024-07-04
- Bash scripts become hard to read and parse as they grow past about a hundred lines2024-07-04
- Emacs-to-vi mode switch keys are disabled in bash, unlike other readline programs2024-06-26
- History matching a mid-command fragment without explicit action would be terrible UX2024-03-27
- Finds it very hard to write complex logic in bash2024-03-09
- Tab completion misses most command options, so users can't discover flags without third-party frameworks2024-03-08
- Bash scripts feel clunky and the syntax is horrid to work with2024-03-02
- Tab completion on ~-n paths won't expand the directory, unlike variable names2024-01-18
- Sometimes loses part of recent command history when the process is killed2024-01-10
- Bash manpage is so long that finding anything in it is hard2023-12-22
- No obvious way to open a file from the command line, unlike double-clicking2023-12-13
- Script breaks when run through a symlink, forcing a wrapper workaround2023-12-04
- Empty array expansion crashes with unbound variable error in older bash, blocking set -u2023-11-23
- Silently ignores errors by default and uses cryptic one-character comparison flags2023-10-07
- Bash scripts are fragile and easy to get wrong, with surprising behaviours2023-09-16
- Bash error messages are obscure, so occasional script writers can't understand what went wrong2023-09-12