Na minha máquina, devido à maneira como as coisas estão configuradas, faço:
cd ~ # /work1/jleffler
cd ~jleffler # /u/jleffler
O primeiro presta atenção ao valor da variável de ambiente $HOME
; Eu deliberadamente defini meu $HOME
para um sistema de arquivos local em vez de um sistema de arquivos montado em NFS. O segundo lê o arquivo de senha (aproximadamente; o NIS complica um pouco as coisas) e descobre que o arquivo de senha diz que meu diretório inicial é /u/jleffler
e muda para esse diretório.
O irritante é que a maioria dos softwares se comporta como descrito acima (e a especificação POSIX para o shell requer esse comportamento). Eu uso algum software (e não tenho muita escolha sobre como usá-lo) que trata as informações do arquivo de senha como o valor atual de $ HOME, o que está errado.
Aplicando isso à questão - como outros apontaram, ' cd ~x
' vai para o diretório inicial do usuário 'x', e mais geralmente, sempre que a expansão do til é feita, ~x
significa o diretório inicial do usuário 'x' (e é um erro se o usuário 'x' não existir).
Pode valer a pena mencionar que:
cd ~- # Change to previous directory ($OLDPWD)
cd ~+ # Change to current directory ($PWD)
Não consigo encontrar imediatamente um uso para ' ~+
', a menos que você faça algumas coisas estranhas ao mover links simbólicos no caminho que leva ao diretório atual.
Você também pode fazer:
cd -
Isso significa o mesmo que ~-
.