As duas partes da sua pergunta têm resoluções diferentes.
cd TEst
Esse comportamento resulta da interação de duas peculiaridades:
- O OS X usa um sistema de arquivos sem distinção entre maiúsculas e minúsculas por padrão.
- Os shells definiram
PWD
como "o diretório de trabalho atual, conforme definido pelo comandocd
", em oposição ao caminho absoluto relatado pela chamada do sistemagetcwd
.
O último truque permite que você use links simbólicos como se fossem diretórios normais. Lembrando o caminho que você digitou em vez do caminho absoluto, o shell permite que você cd symlink
... cd ..
volte ao ponto de partida. Em um sistema de arquivos que não diferencia maiúsculas de minúsculas, os erros de digitação como cd TEst
se comportam exatamente como os links simbólicos, configurando PWD
para o caminho digitado em vez do nome do sistema de arquivos do diretório.
Para contornar isso, você pode usar $(pwd -P)
para obter o caminho canônico conforme relatado por getcwd
em vez do caminho lógico do shell. Tenha em atenção que isto tem o efeito colateral de resolver todos os links simbólicos no caminho. Para imitar a formatação de %c
use: $(basename $(pwd -P | sed "s#$HOME#~#"))
Como alternativa, você pode converter seu sistema de arquivos para maiúsculas e minúsculas, mas alguns aplicativos do OS X, como Steam e Photoshop, não são compatíveis.
cd ${target}
Eu não consigo reproduzir esse comportamento no OS X com zsh
- pode ser um problema com o oh-my-zsh ou sua configuração. Embora você possa usar a mesma solução $(pwd -P)
para isso, outros scripts e programas podem falhar se $PWD
não resolver para um caminho legítimo. Se você puder reproduzir o problema com uma instalação mínima de oh-my-zsh, você deve reportar um bug para os mantenedores.