O motivo pode ser que cd
não é um shell embutido como de costume, mas
- uma função de shell
- 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".)
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.
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.
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
Tags bash