tilde expansion with a variable

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Lynn David Newton
Date:  
Subject: tilde expansion with a variable
I've known for years that one can't do tilde expansion
with a variable name, e.g.,

WHO=joeuser
cd ~$WHO

doesn't work, but I have never quite grokked exactly
why, or whether there is a workaround.

I've written admin scripts where I've had to copy a set
of master files into some place within the home
directory tree of a set of users in a loop. I finished
a complicated one just yesterday, which is why the
question is on my mind again.

How simple it would be to follow a basic model such as
shown in this grealy simplified fragment:

  ulist="joeuser bettyboop johndoe"
  files="one two three"
  for u in $ulist
  do
    cp $files ~$u
  done


Instead, I've had to determine the user's home
directory each time by first pulling it out of the
password file like:

uhome=$(grep "^$u:" /etc/passwd | cut -d: -f6)

or some such nonsense, which seems like a lot of
unnecessary overhead.

It's the same in both ksh (which I use predominantly)
and bash.

Can someone explain what I'm missing about why it's
that way, and if there is a simple solution I'm
overlooking?

--
Lynn David Newton
Phoenix, AZ