Hacker News new | ask | show | jobs
by oguz-ismail2 140 days ago
Since when `{...}' syntax is a glob pattern? What does `{a,b}/c' produce when there is no directory named `a'?
3 comments

Since glibc (better to say csh) implemented it. https://man7.org/linux/man-pages/man3/glob.3.html search for GLOB_BRACE
Globbing is a matching library. It just means match a/c or b/c if they exist. You should get an iterator of somewhere between zero and two elements.
would it not just produce 'b/c'? assuming 'b/c' is an existent file path

what else could you justify it doing?

The behavior of bash would be to produce "a/c" and "b/c", even if both files don't exist
> The behavior of bash would be to produce "a/c" and "b/c", even if both files don't exist

In bash patterns like {a,b} aren't glob-expansion expansions, they're string operations, and those resolve before glob expansions.

You can confirm this with: ls /{nope,tmp}

zsh too
What sibling comment says. Bash does suppress nonexistent products when the pattern includes a glob metacharacter and `shopt -s nullglob' is in effect, but I didn't see a flag or anything to achieve that in the project README.