Respuestas:
Puedes usar eval
:
eval echo ~$USER
Pero ver a Andrew 's comentario y Glenn ' s respuesta a continuación.
eval echo "~$USER"
está asumiendo que $USER
no contiene caracteres especiales que el shell puede interpretar. Por ejemplo, si USER="foo\$bar"
, entonces cuando eval
el shell lo sustituya $bar
en su salida, que no es lo que desea. Básicamente, si toma esta ruta, debe asegurarse de que $USER
sea una entrada sensata. La mayoría de las veces probablemente lo será, pero debes tener esto en cuenta.
Esto podría funcionar para usted:
homedir=$( getent passwd "$USER" | cut -d: -f6 )
Esto también funcionará en usuarios que no son usted. Por ejemplo,
homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
getenv
lugar de asumir la ubicación passwd
es incluso un paso más allá de asumir que la ubicación de la casa es/home/
Parece que eres ese usuario, ¿por qué no?
echo $HOME
?
No sé si ayuda, pero colocar la tilde fuera de la expresión funciona en ZSH pero no en Bash:
echo ~`echo $USER`
Una vez que inicie sesión, ejecute cd
para ir a su directorio de inicio, luego ejecute pwd
para imprimir el directorio de trabajo.
echo $HOME
.
echo ~$username
está bien, pero en sh eval es necesario si es una variable