Você está na página 1de 4

giovannireisnunes

MacOS X não é case-sensitive?


25/03/201623/06/2017 / GIOVANNI NUNES

Acidentalmente acabei esbarrando neste curioso comportamento no MacOS X¹. Você também
acreditava que fazer distinção entre maiúsculas e minúsculas, a tal da case sensitivity
(https://en.wikipedia.org/wiki/Case_sensitivity), fosse da natureza dos UNIX e seus derivados? Por
este motivo resolvi pesquisar a respeito.

(¹) Ao menos na versão 10.6, o Snow Leopard, mas não deve ser diferente em outras versões.

É ou não é UNIX?
Aliás a primeira coisa que me veio em mente foi uma propaganda de 2002 da Apple argumentando
que seu “novo” sistema operacional era um “bom” UNIX.
E também me lembrei de pessoas comentando os motivos dele não ser assim tão “bom” e, claro, nem
ser UNIX.

Que acontece?
Versão curta : Tem relação com o sistema de arquivos, o HFS Plus (https://en.wikipedia.org
/wiki/HFS_Plus), que não distingue entre maiúsculas e minúsculas no nomes dos arquivos e
diretórios, não há nada de errado com o interpretador de comandos (Bash, C Shell, etc) e você pode
parar a leitura agora.

Versão longa : Acontece que o HFS Plus conserva por padrão um velho hábito do HFS (e antes ainda
do ProDOS) de preservar a caixa no nome de arquivos e diretórios mas não fazer distinção nas
operações. Algo lá da época do Apple II/Apple IIGS e dos Macintosh “Branca de Neve”:

Este comportamento é parecido² com o do Windows nos sistemas de arquivos VFAT


(https://en.wikipedia.org/wiki/File_Allocation_Table#VFAT) (alguém ainda usa?) como também
NTFS (https://en.wikipedia.org/wiki/NTFS).

(²) O resultado é o mesmo mas o funcionamento é um pouco diferente.

Comandos e parâmetros
Claro que a “insensibilidade” só se aplica aos nomes dos arquivos e aos diretórios, os parâmetros
passados nos comandos continuam case-sensitive:

aphrodite:~ giovanni$ UNAME -A


UNAME: illegal option -- A
usage: uname [-amnprsv]
aphrodite:~ giovanni$ UNAME -a
Darwin aphrodite.local 10.8.0 Darwin Kernel Version 10.8.0:
Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386

Até aí nada estranho, diversos comandos tem parâmetros diferentes para a letra em minúscula e em
maiúscula.

Claro que não são todos os comandos que funcionarão corretamente independente do modo como
estiverem grafados, alguns casos pode apresentar um comportamento errático:

aphrodite:~ giovanni$ whoami


giovanni
aphrodite:~ giovanni$ WHOAMI
uid=501(giovanni) gid=20(staff) groups=20(staff),
402(com.apple.sharepoint.group.1),401(com.apple.access_screensharing),
204(_developer),100(_lpoperator),98(_lpadmin),81(_appserveradm),
80(admin),79(_appserverusr),61(localaccounts),12(everyone)
Ué? Acontece que no MacOS X, diferentemente do Linux, os comandos id, groups e whoami
correspondem ao mesmo binário só que “unidos” por um link dinâmico.

No caso específico do whoami ele é equivalente a usar “id -un” e o programa sabe que se for
executado com este nome ele deverá se comportar desta forma ajustando corretamente os seus
parâmetros — mas acontece que ele só verifica se argv[0] é igual a “whoami” mas não “WHOAMI”.

Porém, se você fizer esta maluquice:

aphrodite:~ giovanni$ WHOAMI -un


giovanni

Ele funcionará “corretamente”.

Curingas
Dentro da shell, quando você procurar por um arquivo individualmente a caixa dos caracteres será
ignorada. Mas quando se usa curingas o retorno será  case-sensitive.– no exemplo vou me restringir ao
∗, pois é mais que suficiente.

(https://giovannireisnunes.files.wordpress.com/2016/03/osx_curingas1.png)

E não é forçação de barra! Minha câmera fotográfica salva as imagens em formato JPEG grafando a
extensão do arquivos somente em maiúsculas enquanto que meu celular o faz usando apenas letras
minúsculas.

Há salvação?
É possível configurar uma partição HFS Plus para ser case-sensitive, ou não, no momento da sua
criação. Tanto no MacOS X, usando o Disk Utility (que trabalha tanto com partições como com
imagens de disco):
Como em Linux, através das ferramentas do pacote hfsplus:

$ mkfs.hfsplus -h
usage: mkfs.hfsplus [-h | -w] [-N] [hfsplus-options] special-device
options:
-h create an HFS format filesystem (HFS Plus is the default)
-N do not create file system, just print out parameters
-s use case-sensitive filenames (default is case-insensitive)
-w add a HFS wrapper (i.e. Native Mac OS 9 bootable)
...

Porém, pelo que entendi não parece ser uma boa ideia (https://discussions.apple.com/message
/21906523#21906523) usar partições HFS Plus com o case-sensitive ligado. Pois as “coisas” (Sistema
Operacional, Aplicativos etc) poderão não funcionar corretamente.

É ou não é?
Resolvi então testar usando imagem de disco formatada com o case-sensitive ligado.

Só para confirmar que o MacOS X pode não estar mas que ele é case-sensitive sim.

(https://giovannireisnunes.files.wordpress.com/2016/02/osx_copy_fail.png)

Claro, apesar de algumas reações adversas!

Sistemas Operacionais
APPLE IIGS , HFS , MAC OS X , UNIX

UM SITE WORDPRESS.COM.

Você também pode gostar