How to get a user’s home directory from the username in a variables in Bash?
Posted on In QAIn Bash, ~username
gives the username
user’s home. However, this does not work for situations where username
is in a variable such as
~$user
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
.
This is not the right way to get the home directory in the shell scripts. This would not fail even when there is no user with the given name available. The best way is to either user getent or by using awk to get it from the /etc/passwd file