Como @karel observou em sua resposta, ~
é um caractere especial e expandido por Bash no diretório inicial do usuário atual. Consulte o manual do Bash sobre "Expansão do til" ou pesquise o título "Tilde Expansion" na página man ( man bash
).
Qualquer tipo de cotação em torno do ~
impede essa expansão do til.
Para responder à sua pergunta sobre como você ainda pode usá-lo para cd
em um diretório com espaços em seu nome, há algumas alternativas:
-
Omitir aspas e escapar dos espaços com barras invertidas:
cd ~/foo/spaces\ are\ cool/bar
-
Cite o resto do caminho, mas omita-o em torno do til e da primeira barra:
cd ~/"foo/spaces are cool/bar"
Como você pode ver, você pode concatenar strings citadas e não-citadas no Bash simplesmente escrevendo-as uma ao lado da outra sem espaços entre elas.
-
Use a variável de ambiente
$HOME
em vez do til, que ainda é expandido dentro de "aspas duplas" (mas não de 'aspas simples'):cd "$HOME/foo/spaces are cool/bar"