Como eu ligo o “auto-echo” no bash quando eu 'cd'?

7

Eu não sei quando isso começou a acontecer, mas agora, toda vez que eu cd para um diretório ecoa o caminho antes de mudar de diretório. Isso acontece quando eu faço login em um servidor, mas não acontece na minha máquina local. O servidor está executando o Linux. Minha máquina local está executando o Mac OS X.

Eu pesquisei no Google e olhei para a página de manual, mas não consegui encontrar nada. Meu .bashrc / .bash_profile não tem nada a ver com 'cd' (que eu conheço).

Como modifico esse "recurso"?

    
por Avery Chan 03.01.2010 / 01:23

3 respostas

11

O shell auto-echoes porque o CDPATH é definido como uma variável de ambiente. Se você UNSET CDPATH, o comportamento padrão do CD aparecerá novamente.

    
por 03.01.2010 / 01:32
3

A resposta acima sugerindo desabilitar o CDPATH é provavelmente a melhor. No entanto, se você quiser que o CDPATH permaneça ativo enquanto cd -ing você também pode usar em seus scripts algo como:

cd /path/to/wherever > /dev/null

    
por 21.11.2012 / 10:03
1

Outra opção é substituir mais permanentemente o cd com uma função bash. Eu encontrei algo assim eficaz quando colocado em seu arquivo ~/.profile (ou similar):

function cd() {
    if [ -z "$*" ]; then 
        destination=~
    else
        destination=$*
    fi
    builtin cd "${destination}" >/dev/null && ls
}
  • Isso preserva o uso de cd sem argumentos para retornar ao seu diretório pessoal.
  • O >/dev/null é responsável por engolir o nome da pasta que está sendo ecoado. (Esse eco do nome da pasta é o que quebra scripts que usam FOO=$(cd $SOMEVAR && pwd) para salvar um caminho completo para uma variável.)
  • E finalmente; conforme escrito, esta função executa um ls automático depois de alterar os diretórios. (Remova o && ls para parar isso.)
por 14.03.2014 / 21:19

Tags