I heard (although I can't find any sources for proof) that the USER environment variable may not be set in a old Unix shells (maybe even some obscure shells as well). What is the probability that it won't be set?
2 Answers
The probability is very low.
if you want a fallback when writing a script:
USER=${USER:-`whoami`}
...will default $USER if it's unset.
For really old pre-POSIX Bourne shells, you'd want:
test -z "$USER" && USER=`whoami`
Well, are you expecting to use any old shells, or are you expecting users of your program to do so?
Anyway, there's always id -un
, though I have no idea whether this is more or less universal than $USER. You could have your script try both.