cd nonexistent_directory no bash faz com que cd seja diferente do diretório?

5

Ok, estou usando o Linux há 18 anos e nunca vi ou ouvi falar de algo assim:

starting-forth$ ls
ch01/  ch02/  ch04/  ch05/  ch06/  text/
starting-forth$ cd ch07  # A directory I thought I might exist, but didn't
ch04
ch04$

Wat ?! Ok, só para ter certeza:

ch04$ pwd
/home/m/learn/forth/starting-forth/ch04

Meu shell é bash, em um terminal virtual [LilyTerm, para ser exato], em uma sessão XFCE, no Manjaro Linux. Eu não acho que fiz nenhuma customização estranha, e o sistema como um todo é relativamente novo (instalação inicial em outubro de 2014 em um novo laptop).

Então, alguém tem alguma idéia do que poderia causar isso?

ATUALIZAÇÃO: Um fato que não me ocorreu antes (embora eu não saiba por que isso importaria) é que isso está ocorrendo dentro de um diretório de trabalho do Git.

UPDATE 2: Aparentemente, esse comportamento ocorre sempre que houver um diretório existente cujo nome é o mesmo, exceto pelo caractere final (ou dois caracteres?), como o diretório inexistente para o qual eu tento fazer o cd. Por exemplo:

[tmp]$ mkdir dxx17903
[tmp]$ cd dxx17907
dxx17903
[tmp]$ cd dxx179035
dxx17903
[dxx17903]$ cd ..
[tmp]$ cd dxx179005
bash: cd: dxx179005: No such file or directory
[tmp]$ cd dxx179
bash: cd: dxx179: No such file or directory
[tmp]$ cd dxx1790
dxx17903
[dxx17903]$ cd ..
[tmp]$ mkdir foot
[tmp]$ mkdir food
[tmp]$ cd fool
foot
[foot]$ cd ..
[tmp]$ cd football
bash: cd: football: No such file or directory
[tmp]$ cd foo
foot
[foot]$

E assim por diante ... parece que quando há mais de um diretório que "corresponde" (dessa maneira estranha e indesejada), o que você acessa é aquele que foi criado primeiro.

    
por user3582869 28.05.2015 / 03:04

1 resposta

3

Verifique

shopt cdspell

Se isso estiver definido, e você cd para um diretório que não existe, o shell vai olhar para ver se há um diretório com um nome semelhante ao que você digitou. (Assume que você cometeu um erro de ortografia.) Se encontrar algo semelhante ao que você digitou, suponha que foi isso que você quis dizer e é notoriamente indiscriminado - se houver vários nomes semelhantes ao que você digitou (por exemplo, cab , cad , can , cap , car e cat ), ele escolherá um, aparentemente ao acaso.

Ou, talvez, seja o que aparece primeiro no diretório (que é provavelmente o mais antigo).

    
por 28.05.2015 / 08:22

Tags