Environment Variables in Unix

Hi! If you're new here, you may want to subscribe to the Unix Tutorial RSS feed to get regular tips & tricks for all flavors of Unix. Thanks for visiting!

Each process in Unix has its own set of environment variables. They're called environment variables because the default set of such variables consists mostly of session-wide variables used for configuration purposes.

From the point of a Unix shell though, environment variables can be accessed the same way as any other variable.

Common environment variables in Unix

Most well known environment variables are the following:

  • USER - username of a Unix user
  • HOME - full path to a user's home directory
  • TERM - terminal or terminal emulator used by a current user
  • PATH - list of directories searched for executable files when you type a command in Unix shell
  • PWD - current directory

Example of using environment variables

Using Unix username to control the flow of a script

Sometimes it's quite useful to double-check the username of whoever called your script - maybe you'll want to provide different functionality for different users. A common use of such scenario is many commands which are not meant to be run by anyone except superuser (root). If you try running them as a normal user, you'll be told right away that you have to be root in order to use them.

In Unix scripts, the opposite functionality is more useful: making sure you don't run a script as root. Here's one way of doing it:

#!/bin/bash
#
echo "- Verifying the current user..."
if [ "$USER" = "root" ]; then
        echo "You are ROOT, please run as a normal user";
        exit
else
        echo "User $USER, script is ready to continue"
fi
        echo "Work in progress…"

And that's how it would work:

ubuntu$ /tmp/script.sh
- Verifying the current user…
User greys, script is ready to continue
Work in progress…

If I use sudo in Ubuntu to run the script as root, I'll get a warning and the script will end:

$ sudo /tmp/script.sh
- Verifying the current user…
You are ROOT, please run as a normal user

Getting full list of environment variables

In case you feel like exploring, you can use the env command to get a full list of currently set environment variables (the output in this example is abridged):

ubuntu$ env
TERM=xterm
SHELL=/bin/bash
USER=greys
MAIL=/var/mail/greys
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games
PWD=/home/greys
EDITOR=vim
..

That's all I wanted to share with you today. Let me know how exactly you'd like me to further expand and cover this topic - more posts will definitely follow!

See also:

Please share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Netvouz
  • BlinkList
  • Fark
  • Furl
  • kick.ie
  • Netscape
  • Reddit
  • StumbleUpon
  • Technorati
  • YahooMyWeb

0 comments ↓

There are no comments yet...Kick things off by filling out the form below.

Leave a Comment