~
solo se expande a tu propio directorio personal. Hay también a sintaxis ~username
que se expande al directorio personal de un nombre de usuario determinado. Así, si myUsername
es mi nombre de usuario, entonces ~myUsername
es lo mismo que ~
y se amplía a /Users/myUsername
. Mientras tanto, ~root
se amplía a root
que (en mi sistema) es /var/root
. La mayoría de las otras posibilidades, como ~nobody
parecen ir a /var/empty
.
La gran lista de nombres que ves es cuando pulsas Tab después de cd ~
es simplemente una lista de nombres de usuario en su sistema. Puede completar la línea con cualquiera de los nombres de usuario y el resultado será cd
intentará llevarte al directorio personal de ese usuario. Dado que los directorios ~root
, ~nobody
etc. no están en su ~
no es de extrañar que ls ~
no los muestra.
Tenga en cuenta que es típico que haya muchos más "usuarios" en un sistema que usuarios humanos reales, ya que, por razones de seguridad, a menudo es beneficioso ejecutar programas o servicios como su propio usuario. Dado que los programas no pueden acceder a cosas para las que sus usuarios no tienen permisos, esto evita que los programas toquen cosas que no deberían.