98 votos

¿Bash en OSX no distingue entre mayúsculas y minúsculas?

¿Los comandos de bash en OSX no distinguen entre mayúsculas y minúsculas? Escribo "que TR" y muestra /usr/bin/TR, aunque no hay tal binario allí. Lo mismo para otros binarios, cuando están en mayúsculas. ¿O es que Terminal.app está haciendo esta traducción? ¿Cómo puedo desactivar esto?

0 votos

Por curiosidad, ¿por qué querrías desactivar esto?

0 votos

Esta es una pregunta espectacular. Bash tiene un nocaseglob para controlar si los casos coinciden en rangos, pero este pequeño truco es más profundo que el normal locale y completion-ignore-case / nocaseglob

6 votos

La razón por la que quería apagarlo es una tontería, en realidad. Estoy acostumbrado a distinguir entre mayúsculas y minúsculas cuando trabajo en el shell. Sólo me preocupa que esta característica me haga tropezar. Por ejemplo, escribo un bash script, escribo mal 'lS'; el scriptse ejecutará bien en OSX. Lo muevo a mi caja cenTOS, y se rompe. Por supuesto, esto sería fácil de detectar y arreglar, pero podría evitar el escenario por completo si pudiera mantener los funcionando de la misma manera entre los dos sistemas. Descubrí esto por accidente, y no ha sido una molestia hasta ahora, así que probablemente no haré el ejercicio de cambiar los sistemas de archivos sólo por esto.

114voto

Davide Giraudo Puntos 95813

Esto es en realidad una característica del sistema de archivos de su disco, no de bash o de Terminal.app.

HFS+ (el sistema de archivos de Mac) suele estar configurado para ser no distingue entre mayúsculas y minúsculas pero caso de preservación . Esto significa que el sistema de archivos considerará foo y FoO para ser el mismo, pero cuando creas un nuevo archivo recordará qué letras estaban en mayúsculas y cuáles no.

Cuando formateas un disco con HFS+ puedes elegir si el sistema de archivos debe distinguir entre mayúsculas y minúsculas o no. Si eliges formatear con UFS (Unix FileSystem) siempre se distingue entre mayúsculas y minúsculas, AFAIK.

Para comprobar si un disco distingue entre mayúsculas y minúsculas, ejecute

 diskutil info <device>

Por ejemplo:

 diskutil info disk0s2

Busque el Name: línea. Si se lee algo como Mac OS Extended (Case-sensitive, Journaled) significa que se distingue entre mayúsculas y minúsculas. Si sólo se lee Mac OS Extended (sin el Case-sensitive ) entonces sólo es caso de preservación pero no distingue entre mayúsculas y minúsculas .

0 votos

HFS+ es realmente una rareza, ya que tiene la capacidad de reconocer e ignorar casos al mismo tiempo . Tu nota de preservación de mayúsculas y minúsculas no estaba en mi respuesta, y es importante para un sistema operativo basado en Unix que normalmente se espera que sea sensible a las mayúsculas y minúsculas donde Foo y FOO son 2 archivos diferentes. Sospecho que el comportamiento surgió entre el HFS de Mac OS 9 y el HFS+ de Mac OS X y el requisito de ser entendido tanto por las aplicaciones clásicas como por las nuevas, etc.

7 votos

Fuera de Unix, la naturaleza de conservación de casos no es tan inusual. Por ejemplo, NTFS es lo mismo: no distingue entre mayúsculas y minúsculas por defecto, pero se puede formatear para que lo haga. También creo que el por defecto se distingue entre mayúsculas y minúsculas llegó a través de Mac OS 9, pero el hecho de que muchos desarrolladores de Mac y Windows sean perezosos en este sentido y no se preocupen por el uso correcto de las mayúsculas y minúsculas hace que sea casi imposible cambiar a la distinción entre mayúsculas y minúsculas por defecto, lo que rompe muchas aplicaciones. Viniendo de Unix, yo también lo encontré muy extraño al principio.

0 votos

No he vuelto a mirar, pero estoy bastante seguro de que Mac OS ha utilizado sistemas de archivos que preservan las mayúsculas y minúsculas (pero no las distinguen) desde el Mac original de 1984 (que utilizaba MFS -Macintosh File System- para formatear sus disquetes de 400k)

9voto

FreddyBushBoy Puntos 11

Conseguí arreglar esto con una línea siguiendo http://blog.nickburwell.com/blog/2008/11/mac-os-x-terminal-case-insensitive-auto

echo "set completion-ignore-case On" >> ~/.inputrc

0 votos

Esta parece ser la única respuesta que responde a la parte de "cómo puedo desactivar esto" del OP.

6voto

mtnygard Puntos 141

Echa un vistazo a tu sistema de archivos, ya que hay variaciones de HFS que distinguen entre mayúsculas y minúsculas. El valor por defecto es insensible a las mayúsculas y minúsculas, en cuyo caso no se trata tanto de BASH, sino del sistema de archivos subyacente. Puedes probarlo formateando una memoria USB de repuesto con la opción de distinguir entre mayúsculas y minúsculas, y copiando los archivos para repetir la prueba, etc.

2voto

Simon Puntos 558

Es su sistema de archivos.

Estoy usando APFS, también es insensible a las mayúsculas y minúsculas, pero preserva las mayúsculas y minúsculas. Este Correo electrónico: ofrece una buena explicación sobre H(ierarchical)FS y APFS.

  #include <sys/stat.h>
    #include <iostream>

    int main(int argc, char **argv) {
      struct stat sb;
      int ret = stat(argv[0], &sb);
      std::cout << ret << std::endl;
    }

salida de este programa utilizando stat :

➜ ./a.out ./test_dir/cat.png
0
➜ ./a.out ./test_dir/caT.png
0

una simple prueba de bash

➜ cp cat.png caT.png
cp: caT.png and cat.png are identical (not copied).

En cuanto a bash, creo que también es insensible a las mayúsculas y minúsculas en Mac OS si está utilizando el HFS o APFS por defecto, ya que el ejecutable de comandos es también un archivo y cuando se escribe el nombre de un comando, el nombre se utiliza la búsqueda a través de la búsqueda PATH para encontrar ese archivo para ser ejecutado.

➜ echo x X
x X
➜ eChO x X
x X

1voto

Noah Puntos 41

Bash es definitivamente sensible a las mayúsculas y minúsculas.

Acabo de escribir whoami en el terminal y el botón de bloqueo de mayúsculas estaba activado.

Obtuve una respuesta completamente diferente de WHOAMI .

Puedo ver que hay un WHOAMI comando con which pero no puedo encontrarlo con ls .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X