{"slug": "rc", "name": "rc", "category": "terminal", "category_name": "Terminal and shell", "description": "", "recommenders": 4, "commenters": 6, "warners": 0, "score": 3.905, "rising": -1.31, "first": "2025-11-14", "latest": "2026-07-17", "why": "I solve this problem by using a shell that doesn't do that [1].", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 6, "neutral": 1, "compare": 1, "warn": 0}, "spark": [1, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "I solve this problem by using a shell that doesn't do that [1].", "kind": "", "icon": false, "domain": null, "github_repo": "github.com/rakitzis/rc", "official_url": "https://github.com/rakitzis/rc", "pricing": "", "aliases": ["rc"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 760644880, "item_id": 47540305, "url": "https://news.ycombinator.com/item?id=47540305", "by": "piekvorst", "date": "2026-03-27", "stance": "recommend", "quote": "I solve this problem by using a shell that doesn't do that [1].", "excerpt": "I can't reproduce the glob expansion problem. % echo test >'/tmp/hello world' % cat /tmp/hello* test This is bash 5.3.9-1. Still, I couldn't agree more on limiting IFS. Personally, I set it only to <LF>. In my scripts, I rely on the $(ls) idiom heavily. People I've talked to consider this an anti-pattern and suggest relying on -0, -z, --zero, --null, and -print0 flags instead. I don't deny that it's better than nothi", "context": "", "use_case": "shell scripting", "switched_from": "", "story": "Shell Tricks That Make Life Easier (and Save Your Sanity)"}, {"id": 758693393, "item_id": 47418337, "url": "https://news.ycombinator.com/item?id=47418337", "by": "tame3902", "date": "2026-03-17", "stance": "recommend", "quote": "it is a worthwhile read for anybody interested in shells", "excerpt": "It depends on what you are looking for. My recommendation for learning \"how is X done in a shell\" is the OpenBSD ksh: https://github.com/ibara/oksh It's what they use for /bin/sh, it has everything that a complete shell needs (including a mechanism for providing command completions) and has code that is much easier to read than bash or zsh. Something that I also would recommend is the design document for the plan9 rc", "context": "", "use_case": "learning shell design", "switched_from": "", "story": "Building a Shell"}, {"id": 754841584, "item_id": 47177599, "url": "https://news.ycombinator.com/item?id=47177599", "by": "kalterdev", "date": "2026-02-26", "stance": "recommend", "quote": "rc [1] replaced it with a far more telling", "excerpt": "rc [1] replaced it with a far more telling >[1=2] and >[1=] for closing. 1: https://p9f.org/sys/doc/rc.html", "context": "", "use_case": "shell scripting", "switched_from": "", "story": "What does \" 2>&1 \" mean?"}, {"id": 753139521, "item_id": 47071220, "url": "https://news.ycombinator.com/item?id=47071220", "by": "anthk", "date": "2026-02-19", "stance": "recommend", "quote": "there's rc, awk and aux/* helper tools which can do tons of stuff Perl does", "excerpt": "No Perl but there's rc, awk and aux/* helper tools which can do tons of stuff Perl does but without calling tons of CPAN modules. 9front ships an IRC client made with rc, awk and aux/trampoline to connect (and tlsclient for TLS connections). On horoscopes, there's 9ching and tarico at https://shithub.us =)", "context": "", "use_case": "", "switched_from": "", "story": "Terminals should generate the 256-color palette"}, {"id": 744496161, "item_id": 46531010, "url": "https://news.ycombinator.com/item?id=46531010", "by": "kalterdev", "date": "2026-01-07", "stance": "recommend", "quote": "avoids semicolons that Bourne requires in odd places", "excerpt": "Bash is an advanced beast. In Bourne, it was for i in `seq 10` do print $i done Which is pretty much readable though. The only issue is Pascal vs C syntax. As a fan of the former, I admit that the latter is more advanced: it stacks better. E.g. consider if (test -f junk) rm junk against if test -f junk; then rm junk; fi The former \u201cavoids semicolons that Bourne requires in odd places, and the syntax characters better", "context": "", "use_case": "", "switched_from": "", "story": "The Case for Nushell (2023)"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["shell scripting", "shell", "plan 9 shell", "learning shell design"], "compared": [{"slug": "bash", "name": "Bash", "co": 4, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 756610737, "item_id": 47288171, "url": "https://news.ycombinator.com/item?id=47288171", "by": "hbbio", "date": "2026-03-07", "stance": "neutral", "quote": "Using it already (the granular branch) but it's far from stabilized", "excerpt": "Been playing with agent strategies, vibe coding this: https://github.com/hbbio/rc that uses helix by default Using it already (the granular branch) but it's far from stabilized...", "context": "", "use_case": "", "switched_from": "", "story": "Helix: A post-modern text editor"}], "threads": [{"url": "https://news.ycombinator.com/item?id=48953719", "title": "PSA about abuse of cat(1) command. Don't abuse cats", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48245262", "title": "Rubish: A Unix shell written in pure Ruby", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47525243", "title": "Shell Tricks That Make Life Easier (and Save Your Sanity)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47410532", "title": "Building a Shell", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47282701", "title": "Helix: A post-modern text editor", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47171233", "title": "What does \" 2>&1 \" mean?", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 1}, "2025-12": {}, "2026-01": {"recommend": 1}, "2026-02": {"recommend": 2}, "2026-03": {"recommend": 2}, "2026-04": {}, "2026-05": {"compare": 1}, "2026-06": {}, "2026-07": {"neutral": 1}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 783277553, "item_id": 48954847, "url": "https://news.ycombinator.com/item?id=48954847", "by": "ButlerianJihad", "date": "2026-07-17", "stance": "neutral", "quote": "I used the rc shell from plan9 for quite a while", "excerpt": "fish is not POSIX-compatible, and not Bourne-compatible, so I don't see how that really matters at all. I used the rc shell from plan9 for quite a while, and I wouldn't expect its syntax rules to match, either!", "context": "", "use_case": "shell", "switched_from": "", "story": "PSA about abuse of cat(1) command. Don't abuse cats"}, {"id": 771945457, "item_id": 48246591, "url": "https://news.ycombinator.com/item?id=48246591", "by": "dharmatech", "date": "2026-05-23", "stance": "compare", "quote": "rc is pretty minimal.", "excerpt": "Cool project! Just for fun, looking at code count as a rough measure of complexity. rubish: 26,842 rc (plan9 shell): 5,888 To be fair, rubish does a lot more than rc. rc is pretty minimal. rc source: https://github.com/9front/9front/tree/front/sys/src/cmd/rc Measures below: $ wc -l `find . -name '*.rb'` 1124 ./rubish/execution_context.rb 43 ./rubish/frontend.rb 260 ./rubish/builtins/hash_directories.rb 510 ./rubish/b", "context": "", "use_case": "Plan 9 shell", "switched_from": "", "story": "Rubish: A Unix shell written in pure Ruby"}, {"id": 760644880, "item_id": 47540305, "url": "https://news.ycombinator.com/item?id=47540305", "by": "piekvorst", "date": "2026-03-27", "stance": "recommend", "quote": "I solve this problem by using a shell that doesn't do that [1].", "excerpt": "I can't reproduce the glob expansion problem. % echo test >'/tmp/hello world' % cat /tmp/hello* test This is bash 5.3.9-1. Still, I couldn't agree more on limiting IFS. Personally, I set it only to <LF>. In my scripts, I rely on the $(ls) idiom heavily. People I've talked to consider this an anti-pattern and suggest relying on -0, -z, --zero, --null, and -print0 flags instead. I don't deny that it's better than nothi", "context": "", "use_case": "shell scripting", "switched_from": "", "story": "Shell Tricks That Make Life Easier (and Save Your Sanity)"}, {"id": 758693393, "item_id": 47418337, "url": "https://news.ycombinator.com/item?id=47418337", "by": "tame3902", "date": "2026-03-17", "stance": "recommend", "quote": "it is a worthwhile read for anybody interested in shells", "excerpt": "It depends on what you are looking for. My recommendation for learning \"how is X done in a shell\" is the OpenBSD ksh: https://github.com/ibara/oksh It's what they use for /bin/sh, it has everything that a complete shell needs (including a mechanism for providing command completions) and has code that is much easier to read than bash or zsh. Something that I also would recommend is the design document for the plan9 rc", "context": "", "use_case": "learning shell design", "switched_from": "", "story": "Building a Shell"}, {"id": 754841584, "item_id": 47177599, "url": "https://news.ycombinator.com/item?id=47177599", "by": "kalterdev", "date": "2026-02-26", "stance": "recommend", "quote": "rc [1] replaced it with a far more telling", "excerpt": "rc [1] replaced it with a far more telling >[1=2] and >[1=] for closing. 1: https://p9f.org/sys/doc/rc.html", "context": "", "use_case": "shell scripting", "switched_from": "", "story": "What does \" 2>&1 \" mean?"}, {"id": 753139521, "item_id": 47071220, "url": "https://news.ycombinator.com/item?id=47071220", "by": "anthk", "date": "2026-02-19", "stance": "recommend", "quote": "there's rc, awk and aux/* helper tools which can do tons of stuff Perl does", "excerpt": "No Perl but there's rc, awk and aux/* helper tools which can do tons of stuff Perl does but without calling tons of CPAN modules. 9front ships an IRC client made with rc, awk and aux/trampoline to connect (and tlsclient for TLS connections). On horoscopes, there's 9ching and tarico at https://shithub.us =)", "context": "", "use_case": "", "switched_from": "", "story": "Terminals should generate the 256-color palette"}, {"id": 744496161, "item_id": 46531010, "url": "https://news.ycombinator.com/item?id=46531010", "by": "kalterdev", "date": "2026-01-07", "stance": "recommend", "quote": "avoids semicolons that Bourne requires in odd places", "excerpt": "Bash is an advanced beast. In Bourne, it was for i in `seq 10` do print $i done Which is pretty much readable though. The only issue is Pascal vs C syntax. As a fan of the former, I admit that the latter is more advanced: it stacks better. E.g. consider if (test -f junk) rm junk against if test -f junk; then rm junk; fi The former \u201cavoids semicolons that Bourne requires in odd places, and the syntax characters better", "context": "", "use_case": "", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 734960848, "item_id": 45935053, "url": "https://news.ycombinator.com/item?id=45935053", "by": "kalterdev", "date": "2025-11-14", "stance": "recommend", "quote": "", "excerpt": "> I\u2019m not saying it\u2019s wrong to have a preference for smaller languages, I just haven\u2019t seen anything in my career to indicate that smaller languages outperform when it comes to faster delivery or less bugs. I can imagine myself grappling with a language feature unobvious to me and eventually getting distracted. Sure, there is a lot of things unobvious to me but Go is not one of them and it influenced the whole enviro", "context": "", "use_case": "shell scripting", "switched_from": "", "story": "Go's Sweet 16"}]}