O status de retorno de 'cd' é sempre 0

3

Estou executando o seguinte comando.

cd dirname; echo $?

Isso sempre retorna 0 se o cd não for bem-sucedido. Isso está me dando dor de cabeça incrível.

Como verificar se o cd foi bem-sucedido sem ler sua mensagem de erro.

    
por Dilawar 30.05.2013 / 03:52

3 respostas

4

O motivo pode ser que cd não é um shell embutido como de costume, mas

  1. uma função de shell
  2. ou um alias

Isso pode ser verificado com type cd .

(Eu faço do comentário uma resposta para que a pergunta possa ser "fechada".)

    
por 30.05.2013 / 12:34
2

Esse problema surgiu devido a alguma estupidez. Como sugerido por HaukeLaging, eu fiz type cd . Aconteceu que o cd foi aliado para alguma função bash que estava registrando o usuário cd activity no servidor.

Eu aliasizei cd de volta para cd e o script começou a funcionar bem. Tive a tentação fugaz de apagar a questão completamente primeiro, embora achasse que deveria respondê-la aqui. Eu posso ser útil para outra pessoa.

    
por 30.05.2013 / 05:07
0

Uma solução é prefixar a chamada com o comando bash builtin '. Isso irá forçar o uso do arquivo binário real 'cd'

    root@ds002:~# command cd /foo
    -bash: cd: /foo: No such file or directory
    root@ds002:~# echo $?
    1
    
por 08.06.2013 / 02:01

Tags