No Linux, você pode ver quais tipos de sistema de arquivos estão disponíveis no kernel em execução no arquivo /proc/filesystems
. O conteúdo deste arquivo é construído em tempo real pelo kernel quando é lido, então reflete o status atual. O formato deste arquivo é um pouco chato: cada linha contém 8 espaços seguidos por um tipo de sistema de arquivos, ou nodev
seguido por 3 espaços seguidos por um tipo de sistema de arquivos. Retire os primeiros 8 caracteres de cada linha para obter apenas os tipos de sistema de arquivos disponíveis, ou use grep -w
(contanto que você não esteja procurando por um tipo de sistema de arquivos chamado nodev
).
if grep -qw aufs /proc/filesystems; then
echo aufs is available
fi
Esta não é a história completa, porque o driver do sistema de arquivos pode estar disponível na forma de um módulo que não está atualmente carregado. Supondo que você possa carregar módulos, se o sistema de arquivos não estiver disponível, tente carregá-lo. Os módulos do sistema de arquivos possuem um alias na forma fs-FSTYPE
(o nome real do módulo é geralmente o nome do tipo de sistema de arquivos, mas nem sempre).
if grep -qw aufs /proc/filesystems; then
echo aufs is available
elif modprobe fs-aufs; then
echo now aufs is available
fi
Isto é para sistemas de arquivos do kernel. Para os arquivos do FUSE, verifique se o sistema de arquivos fuse
está disponível e procure o executável que implementa o sistema de arquivos. Embora você possa procurar por fuse
em /proc/filesystems
, isso apenas informa se está disponível, não se seu programa tem privilégios suficientes para usá-lo. Um teste mais confiável na prática é verificar se você pode gravar em /dev/fuse
.
if [ -w /dev/fuse ]; then
echo FUSE is available
if type unionfs-fuse >/dev/null 2>/dev/null; then
echo unionfs-fuse is available
fi
fi