I have the following for loop:

for f in ~/.lo-rcs/common/*
   . $f

which is returning this error:

bash: /home/sk/.lo-rcs/common/*: No such file or directory

I keep classifying my bashrc commands into multiple separate files and keeping them under $HOME/.lo-rcs/common. I want all the files to be sourced into Bash automatically, but it keeps throwing the "no such file..." error.


Why isn't Bash searching for files with the same name as the globbing pattern string?

  • NOTE #1: .lo-rcs/common is my local rc configuration folder that contains separate files for aliases, one for export variables, one for functions etc. for ease of maintenance.
  • NOTE #2: All the files under .lo-rcs/common are hidden files, aka. files that are preceded by a dot.

~/.lo-rcs/common/* matches all the non-hidden files in that directory, if there are no files in that directory or all of them are hidden, the pattern evaluates to itself resulting to your error message.

There is no good reason to make those files hidden. - Just rename them and everything works as expected.

If you really want those files to be hidden, than you could use ~/.lo-rcs/common/.*. But be aware that this includes . and ...

  • 3
    FWIW: bash has a small menagerie of options that influence this behaviour: nullglob, failglob, dotglob, nocaseglob, and the environment variable GLOBIGNORE. – lcd047 Jun 7 '15 at 15:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.