2016-05-29 1 views
0

Si UNIX est sensible à la casse, et j'ai un répertoire nommé ruby ​​dans mon répertoire, et aucun répertoire nommé Ruby, pourquoisensibilité à la casse sous UNIX et Bash

cd ruby 

et

cd Ruby 

produire le même résultat, c'est je cd dans le répertoire ruby?

+2

Certains systèmes de fichiers (notamment, HFS +) sont préservant le cas; le cas utilisé pour créer un fichier ou un répertoire est mémorisé, mais tous les cas sont autorisés à y accéder. C'est-à-dire que 'mkdir ruby' crée le répertoire avec toutes les lettres minuscules, mais la recherche permet n'importe quelle combinaison de cas:' ruby', 'RUBY',' RuBy', etc. tous correspondent au même répertoire. – chepner

+0

Donc, est-ce le cas avec OSX 10.11.1? Je peux aussi taper Mkdir ou mkDIR au lieu de mkdir, et cela ne donne pas une erreur "command not found". –

+0

Oui, OS X utilise HFS +. – chepner

Répondre

1

Assurez-vous d'abord qu'ils font référence au même répertoire. Vérifiez la sortie de:

ls [Rr]uby 

Si vous êtes sûr qu'ils font référence dans le même répertoire, il pourrait alors être cdspell builtin de bash qui travaille ici, dont le but est de corriger les fautes de frappe mineures dans les noms de répertoire tout en faisant cd. Dans votre cas, il corrige les cas de la lettre R/r.

Vous pouvez vérifier si elle est activée par:

shopt cdspell 

Exemple:

$ cd Ques 
bash: cd: Ques: No such file or directory 

$ shopt -s cdspell 

$ cd Ques 
ques 

ques$ shopt cdspell 
cdspell   on 
+0

si je tape shopt cdspell, Bash dit cdspell off –

+0

@ A.N.Other Êtes-vous sûr, ils sont le même répertoire? vérifier la sortie de 'ls [Rr] uby'? – heemayl

+0

100% sûr, ls ruby ​​et ls Ruby donnent le même résultat. Le même résultat se produit si je crée un nouveau répertoire, par ex. newdir Je peux alors cd Newdir et cd newdir –