Risposte:
eval echo "~$USER"
assumendo che $USER
non contenga caratteri speciali che la shell potrebbe interpretare. Ad esempio, se USER="foo\$bar"
, allora quando eval
la shell sostituirà il $bar
tuo output che non è quello che vuoi. Fondamentalmente, se prendi questa strada, devi assicurarti che $USER
sia 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 )
getenv
piuttosto che supporre che la posizione di passwd
sia 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 cd
per accedere alla tua home directory, quindi esegui pwd
per stampare la directory di lavoro.
echo $HOME
.
echo ~$username
va bene, ma in sh eval è necessario se è una variabile