![当模式匹配此字符串时,为什么 Bash 返回“No such file..”?](https://linux22.com/image/66497/%E5%BD%93%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D%E6%AD%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%97%B6%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%20Bash%20%E8%BF%94%E5%9B%9E%E2%80%9CNo%20such%20file..%E2%80%9D%EF%BC%9F.png)
我有以下 for 循环:
for f in ~/.lo-rcs/common/*
do
. $f
done
返回此错误:
bash: /home/sk/.lo-rcs/common/*: No such file or directory
我不断将 bashrc 命令分类到多个单独的文件中,并将它们保存在$HOME/.lo-rcs/common
.我希望所有文件都自动导入到 Bash 中,但它不断抛出“没有这样的文件...”错误。
问题
为什么 Bash 不搜索与通配模式字符串同名的文件?
- 注意#1:
.lo-rcs/common
是我的本地 rc 配置文件夹,其中包含单独的别名文件,一个用于导出变量,一个用于函数等,以便于维护。 - 笔记2:下面的所有文件
.lo-rcs/common
都是隐藏文件,又名。前面有点的文件。
答案1
~/.lo-rcs/common/*
匹配该目录中的所有非隐藏文件,如果该目录中没有文件或所有文件都被隐藏,则该模式将对其自身求值,从而导致错误消息。
没有充分的理由隐藏这些文件。 - 只需重命名它们,一切都会按预期进行。
如果您确实希望隐藏这些文件,那么您可以使用~/.lo-rcs/common/.*
.但请注意,这包括.
和..
。