In the Unix bash shell script, how to capture who the user running the script is?

Hi, in the Unix bash shell script I am trying to capture who the user running the script is.

Question:
What would be a Unix bash shell script/commands so that "me007" (Unix user name) can be replaced with a name of the user running this script?

By the way, this script is called from the .bash_profile

Below is a working Unix script which is intended to delete those unneeded SAS* directories without asking a user too many questions but all files in those directories will be deleted automatically as well. I would like any user to be able to run this script from their .bash_profile file but as you see right now it is not possible to do that because there is a specific user name (me007) hardcoded in the script.

Note:
me007 - a user name on Unix server.
/directory1/tmp - a directory where all these processes will occur.
 
for dir in $(find /directory1/tmp -type d -a -user me007 -a  -name "SAS*")
do
   echo "Remove $dir (y/n)?  "; read YN
   [[ $YN = Y || $YN = y ]] && rm -r $dir 
done

Open in new window

labradorchikAsked:
Who is Participating?
 
n2fcConnect With a Mentor Commented:
instead of "me007" use "$USER" or "$LOGNAME" environment variable to pick up logged on user id
0
 
AnthonyHamonConnect With a Mentor Commented:
The currently logged on user is in the environment variable $LOGNAME
echo You are logged on as $LOGNAME

You may need to export it first:
export LOGNAME
0
 
labradorchikAuthor Commented:
Sorry, but I am not sure if I understand you correctly. How can $LOGNAME be implemented within this script?
 
Should I just place export $LOGNAME before this script and that is all?
In that case, what should I exchange "me007" with?
0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
n2fcCommented:
Try this script to see how the variables react in YOUR system!

echo " LOGNAME: "
echo $LOGNAME
echo "*********"
echo " USER: "
echo $USER
echo "*********"

Open in new window

0
 
n2fcCommented:
The export may or may not be necessary...
If needed, it will be the first line in the script...

Try the script sample above... Your system will react properly either with $LOGNAME or $USER instead of "me007"...
0
 
labradorchikAuthor Commented:
Oh, just like this?

export $LOGNAME

for dir in $(find /directory1/tmp -type d -a user $LOGNAME -a  -name "SAS*")
do
   echo "Remove $dir (y/n)?  "; read YN
   [[ $YN = Y || $YN = y ]] && rm -r $dir 
done

Open in new window

0
 
n2fcCommented:
You forgot - before -user $LOGNAME...

Otherwise OK...
Try each way... $USER and $LOGNAME
0
 
woolmilkporcConnect With a Mentor Commented:
LOGNAME is in the environment anyway, so no need to export it.

Further, the shell will expand $LOGNAME before "find" will see it, another reason why it doesn't have to be exported.

Next, the statement, if used anyway, must read "export LOGNAME" without "$" in front.

Lastly, please note that $USER and $LOGNAME will not change to "newuser" after issuing "su newuser", but $(whoami)  and $LOGIN will.
After "su - newuser" all four variables will change to "newuser", but $(who am i | cut -f1 -d" ") will not.
0
 
Gerwin Jansen, EE MVETopic Advisor Commented:
change the username to:
`whoami`
0
 
labradorchikAuthor Commented:
Thank you everyone for your comments and suggestions!!
I just replaced user with $LOGNAME and it worked fine! :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.