Risposte:
eval echo "~$USER"assumendo che $USERnon contenga caratteri speciali che la shell potrebbe interpretare. Ad esempio, se USER="foo\$bar", allora quando evalla shell sostituirà il $bartuo output che non è quello che vuoi. Fondamentalmente, se prendi questa strada, devi assicurarti che $USERsia un input sano. Il più delle volte probabilmente lo sarà, ma dovresti tenerlo a mente.
Questo potrebbe funzionare per te:
homedir=$( getent passwd "$USER" | cut -d: -f6 )
Questo funzionerà anche con utenti che non sono te. Per esempio,
homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
getenvpiuttosto che supporre che la posizione di passwdsia anche un passo oltre che supporre che la posizione di casa sia/home/
Sembra che tu sia quell'utente - perché no
echo $HOME
?
Non so se aiuta, ma posizionare la tilde all'esterno dell'espressione funziona su ZSH ma non su Bash:
echo ~`echo $USER`
Una volta effettuato l'accesso, esegui cdper accedere alla tua home directory, quindi esegui pwdper stampare la directory di lavoro.
echo $HOME.
echo ~$usernameva bene, ma in sh eval è necessario se è una variabile