A maneira como expansão de til funciona é que prefixo de til consiste em ~
mais todos os caracteres antes da primeira barra sem aspas ou no final da palavra, se não há nenhuma barra sem marcação. Então a substituição que acontece depende do prefixo do til; ~
, ~-
e ~+
são casos especiais, caso contrário, o ~
é retirado e o restante dos caracteres é considerado um nome de usuário. Veja man bash
(ou a página de manual do seu shell se esse shell não for Bash).
-
Em
~"/mydata"
, o til é seguido por uma barra em citada e, portanto, o prefixo til é~/mydata
; já que não há uma conta de usuário chamada/mydata
, o prefixo til não será substituído e o shell estará procurando por um diretório chamado literalmente~/mydata
e não o encontrará. -
Em
~/"mydata"
o til é seguido por uma barra sem aspas e, assim, o til é substituído pelo conteúdo de$HOME
seHOME
for definido, caso contrário, com o nome do diretório inicial do usuário (retirado de/etc/passwd
); o shell estará procurando por um nome de diretório como/home/
username/mydata
.