Criei um caminho com espaços e, quando tento alterar o diretório, recebo a mensagem de erro "muitos argumentos", apesar de escapar dos espaços ou citar o caminho:
Aqui estão os testes que fiz:
# creating a path with spaces in it
$mkdir -p "01.Silly Path/0.2 With Plenty of /0.3 spaces"
# Trying to cd
$cd 01.Silly\ Path/0.2\ With\ Plenty\ of\ /0.3\ spaces/
bash: cd: too many arguments
# Trying with sh
$sh
$ cd 01.Silly\ Path/0.2\ With\ Plenty\ of\ /0.3\ spaces/
$ pwd
/xxx/Documents/dev/01.Silly Path/0.2 With Plenty of /0.3 spaces
# Trying to create a file using the problematic path : it works
$echo "dummy file test" > 01.Silly\ Path/0.2\ With\ Plenty\ of\ /0.3\ spaces/dummy_file.t
$cat 01.Silly\ Path/0.2\ With\ Plenty\ of\ /0.3\ spaces/dummy_file.t
dummy file test
# But command cd fails
$cd 01.Silly\ Path/0.2\ With\ Plenty\ of\ /0.3\ spaces/
bash: cd: too many arguments
$bash --version
GNU bash, version 5.2.15(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
lde@ldedebian ~/Documents/dev $
$
# Tried quoting instead of escaping : still having failure with bash
$( cd "01.Silly Path/0.2 With Plenty of /0.3 spaces/" ; pwd)
bash: cd: too many arguments
# But works fine in zsh and sh
$sh -c ' cd "01.Silly Path/0.2 With Plenty of /0.3 spaces/" ; pwd '
/home/xxx/Documents/dev/01.Silly Path/0.2 With Plenty of /0.3 spaces
$zsh -c ' cd "01.Silly Path/0.2 With Plenty of /0.3 spaces/" ; pwd '
/home/xxx/Documents/dev/01.Silly Path/0.2 With Plenty of /0.3 spaces
# And the issue seems to be related to spaces indeed
$mkdir -p "01.Silly_Path/0.2_With_Plenty_of_/0.3_spaces"
$( cd 01.Silly_Path/0.2_With_Plenty_of_/0.3_spaces/; pwd)
/home/xxx/Documents/dev/01.Silly_Path/0.2_With_Plenty_of_/0.3_spaces
Perdi alguma coisa sobre Bash e espaços ou é um bug?
Você confirmou nos comentários que tinha algum software instalado que sobrecarregava o utilitário interno do shell
cd
com sua própria função de shell. Essa função shell contém um bug , que faz com que ela divida seu argumento de nome de caminho em espaços (possivelmente devido ao esquecimento de colocar aspas duplas em uma expansão de variável), levando ao problema que você observa.Desinstalar esse software, ou pelo menos remover a função shell com
... provavelmente resolveria o problema.
Você também pode optar por corrigir o problema alterando
\$*
to\"\$@\"
e$*
to"$@"
neste arquivo .