Esse é um bash
recurso chamado Tilde Expansion . Citação man bash
:
Se uma palavra começar com um caractere de til sem aspas (`~ '), todos os caracteres que precedem a primeira barra sem aspas (ou todos os caracteres, se não houver uma barra sem aspas) serão considerados um prefixo de til. Se nenhum dos caracteres no prefixo de til for citado, os caracteres no prefixo de til após o til serão tratados como um possível nome de login. Se esse nome de login for a cadeia nula, o til será substituído pelo valor do parâmetro do shell HOME. Se HOME estiver desabilitado, o diretório inicial do usuário que está executando o shell será substituído.
Para que a expansão funcione, o caractere til ~
precisa ser não citado, caso contrário, o caractere é interpretado literalmente e cd
falhará se não houver um diretório nomeado ~
presente no diretório atual. Veja esta resposta extensa para obter uma explicação sobre como citar bash
. Se você precisar citar parte do caminho, poderá:
cite pelo menos os caracteres que precisam ser citados com aspas simples, por exemplo
~/dir' 'with' 'spaces/
ou
~/'dir with spaces/'
cite pelo menos os caracteres que precisam de aspas duplas, por exemplo
~/dir" "with" "spaces/
ou
~/"dir with spaces/"
cite apenas os caracteres que precisam ser citados com barras invertidas, por exemplo
~/dir\ with\ spaces/
A Expansão Tilde tem alguns recursos mais interessantes, por exemplo:
~+
expande para o valor de PWD
, ou seja, o diretório de trabalho atual
~-
expande para o valor de OLDPWD
, ou seja, o diretório de trabalho anterior
~john
expande para o diretório inicial associado ao nome de login "john"
cd
em um diretório chamado~
?