In Bash, ~username gives the username user's home. However, this does not work for situations where username is in a variable such as
How to get the home directory from the user name in a variable in Bash?
You can use this Bash script snippet:
userhome=$(eval echo ~$user)
Here, $user get evaluated to its value (say VALUE) and then ~VALUE will be evaluated again by eval which gives the same effect as ~username.