É tudo sobre a divisão de palavras, há uma variável chamada IFS
: separador de campo interno, após uma expansão ou substituição, o bash dividirá os resultados desse processo em palavras diferentes com base no valor do IFS.
O valor padrão desta variável é: "<space><tab><newline>"
, significa palavras separadas por espaço ou tabulação ou uma nova linha será considerada e passada como palavras separadas para o seu comando.
Portanto, uma variável com o valor "olá nome é foo", após a expansão será considerada como 4 palavras diferentes:
$ printf "%s\n" hello name is foo
hello
name
is
foo
Se eu quiser considerá-lo como uma única palavra, devo citá-lo:
$ printf "%s\n" "hello name is foo"
hello name is foo
Se eu definir o IFS como /
, ele usará /
como separador de campo, portanto:
$ export IFS='/'
$ var=/some/thing/here
$ echo $var
some thing here
Esse pode ser o seu caso (ter um /
no IFS), no entanto, se você citar a subsituição como: "$( ... )"
, então o bash ignorará a divisão de palavras.
tente executar seus comandos novamente, agora ele não deve usar /
para separar palavras, incluindo o caminho (pwd).