Esta es una bash
característica llamada Tilde Expansion . Citando man bash
:
Si una palabra comienza con un carácter de tilde sin comillas (`~ '), todos los caracteres que preceden a la primera barra sin comillas (o todos los caracteres, si no hay una barra sin comillas) se consideran prefijos de tilde. Si ninguno de los caracteres en el prefijo tilde se cita, los caracteres en el prefijo tilde después de la tilde se tratan como un posible nombre de inicio de sesión. Si este nombre de inicio de sesión es la cadena nula, la tilde se reemplaza con el valor del parámetro de shell HOME. Si HOME no está configurado, el directorio de inicio del usuario que ejecuta el shell se sustituye en su lugar.
Para que la expansión funcione, el carácter tilde ~
debe estar sin comillas, de lo contrario, el carácter se toma literalmente y cd
falla si no hay un directorio nombrado ~
presente en el directorio actual. Vea esta respuesta entretenida para obtener una explicación de la cita bash
. Si necesita citar parte de la ruta, puede:
cite al menos los caracteres que necesitan comillas con comillas simples, p. ej.
~/dir' 'with' 'spaces/
o
~/'dir with spaces/'
cite al menos los caracteres que necesitan comillas con comillas dobles, p. ej.
~/dir" "with" "spaces/
o
~/"dir with spaces/"
cite solo los caracteres que necesitan comillas con barras invertidas, p. ej.
~/dir\ with\ spaces/
Tilde Expansion tiene algunas características más interesantes, por ejemplo:
~+
se expande al valor de PWD
, es decir, el directorio de trabajo actual
~-
se expande al valor de OLDPWD
, es decir, el directorio de trabajo anterior
~john
se expande al directorio de inicio asociado con el nombre de inicio de sesión "john"
cd
en un directorio llamado~
?