wildcards don't work in sh shell for FAT32 filesystem

Carl k0802647 at telus.net
Mon Feb 9 22:21:12 PST 2009


Why do pathnames containing a wildcard work in the tcsh shell regardless 
of the target filesystem, but do not work in the sh shell if the target 
filesystem is FAT32?

The following sequence begins in the tcsh shell by mounting a FAT32 
partition from a USB thumb drive. /tmp is in a UFS2 partition. There are 
no files with "fish" in their names in either location. This is 
happening in FreeBSD 7.0-RELEASE. Why do the last four commands not have 
the same result?

     tcsh# mount_msdosfs /dev/da0s1 /mnt
     tcsh# rm -f /tmp/fish*
     rm: No match.
     tcsh# rm -f /tmp/*fish
     rm: No match.
     tcsh# rm -f /mnt/fish*
     rm: No match.
     tcsh# rm -f /mnt/*fish
     rm: No match.
     tcsh# sh
     sh# rm -f /tmp/fish*
     sh# rm -f /tmp/*fish
     sh# rm -f /mnt/fish*
     rm: /mnt/fish*: Invalid argument
     sh# rm -f /mnt/*fish
     rm: /mnt/*fish: Invalid argument

FWIW, the context of this discovery was trying to use the grub-install 
script from the GRUB port to install its boot loader on a FAT32 thumb 
drive. The script aborts when it attempts something like "rm -f 
/mnt/boot/grub/*stage1_5"

Carl                                             / K0802647


More information about the freebsd-questions mailing list