通配符是在shell中展开还是在shell派生的命令中展开?

wvyml7n5  于 2023-04-21  发布在  Shell
关注(0)|答案(1)|浏览(107)

例如,假设我在当前工作目录中有这些文件:
demo.txttext.txttemp.txtaudio.mp3
当我在shell中运行这个命令时:

ls *.txt

尼思发生了什么?
shell是否先将其扩展到ls demo.txt text.txt temp.txt,然后将其放入argv,然后再fork ls
或者它什么也不做,只是把ls *.txt直接放入argv,然后派生ls

pcrecxhr

pcrecxhr1#

在Linux(和一般的Unix变体)中,通配符扩展是由shell在调用命令之前完成的(除非用引号显式地抑制)。
在其他操作系统(如DOS、Windows)中,通配符总是一字不差地传递,其扩展由命令负责。

相关问题