Réponses:
Vous pouvez utiliser eval
:
eval echo ~$USER
Mais voir le commentaire d’ Andrew et la réponse de glenn ci-dessous.
eval echo "~$USER"
faites l'hypothèse qui $USER
ne contient pas de caractères spéciaux que le shell peut interpréter. Par exemple, si USER="foo\$bar"
, alors, eval
le shell va substituer $bar
dans votre sortie ce qui n’est pas ce que vous voulez. Fondamentalement, si vous prenez cette route, vous devez vous assurer que cette $USER
entrée est saine. La plupart du temps, ce sera probablement le cas, mais vous devez en tenir compte.
Cela pourrait fonctionner pour vous:
homedir=$( getent passwd "$USER" | cut -d: -f6 )
Cela fonctionnera également sur des utilisateurs autres que vous. Par exemple,
homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
getenv
plutôt que de supposer que l’emplacement de la maison passwd
est encore plus loin que de supposer que l’emplacement de la maison est/home/
Il semble que vous soyez cet utilisateur - pourquoi pas
echo $HOME
?
Je ne sais pas si cela peut aider, mais placer le tilde en dehors de l'expression fonctionne sur ZSH mais pas sur Bash:
echo ~`echo $USER`
Une fois que vous vous êtes connecté, exécutez cd
pour accéder à votre répertoire personnel, puis pwd
imprimez le répertoire de travail.
echo $HOME
.
echo ~$username
, mais c'est correct, mais dans sh eval, une variable est nécessaire