Eu tenho uma variável com um caminho de diretório. Se eu echo
seu conteúdo, ele mostra o caminho certo, mas se eu tento cd
, não e parece deletar o /home/user/
do caminho:
[user@project]$ echo $PROJECT_DELIVERY
/home/user/projects/ws/project/delivery/project_name_0.1.0
[user@project]$ cd $PROJECT_DELIVERY
: No such file or directoryuser/projects/ws/project/delivery/project_name_0.1.0
Este é o conteúdo deprintf %s "$PROJECT_DELIVERY" | xxd
[a27503408@ded30325 install]$ printf %s "$PROJECT_DELIVERY" | xxd
0000000: 2f68 6f6d 652f 6132 3735 3033 3430 382f /home/user/
0000010: 7072 6f6a 6563 7473 2f61 7332 3530 2f41 projects/as250/A
0000020: 5332 3530 5f4d 3135 3533 5f54 4d54 432f S250_M1553_TMTC/
0000030: 6465 6c69 7665 7279 2f41 5332 3530 5f4d delivery/AS250_M
0000040: 3135 3533 5f54 4d54 435f 302e 312e 300d 1553_TMTC_0.1.0.
Alguma ideia do que pode estar causando esse comportamento? Estou usando o bash 4.1.2(1)
Você tem um CR à direita no nome do diretório. (Consulte o
0d
como o caractere final no despejo hexadecimal.)Isso também explica por que o caminho do diretório é substituído pela mensagem de erro. Normalmente você conseguiria
Mas você estava obtendo o equivalente a isso, onde as informações iniciais foram substituídas pelo CR e a mensagem de erro subsequente:
Tente isso para demonstrar o ponto:
Você pode remover o
\r
caractere à direita com uma construção como estaComo @Kusalananda comentou, sua variável contém mais do que aparenta - desatento - olho. Veja a linha em branco após sua saída de eco?
De fato, havia os caracteres '\r' e '\n'. Eu os removi com: