Here's a quick BASH tip for everyone who uses it.  This involves the difference
between interactive shells and non-interactive.  Have you ever had scp(1) fail
on you because of a command you put in your .bash_profile?  Let's say you
called uptime(1) or who(1).

bash$ scp me at myhost:myfile .
 10:47am  up 55 days, 16:14, 31 users,  load average: 0.01, 0.03, 0.00
bash$ ls myfile
ls: myfile: No such file or directory

OK.  Here's the problem.  scp(1) reads your .bash_profile and barfs on any
stdout that shouldn't normally be there.  In my profile, I have lines such as:

    test [ -f /etc/profile ]  && source /etc/profile
    test [ -f ~/.bashrc ] && source ~/.bashrc

In my .bashrc, I've called uptime(1):
    
    uptime

Luckily, there's a simple fix.  You can examine the options that the bash shell
has set by default, or that you have set manually, by examining the $-
variable.

    # example ~/.bashrc
    do_interactive() {
        uptime
        who
        mesg y
    }

    case $- in
        *i*)
            do_interactive
        ;;
    esac

    # ... your standard noninteractive rc stuff follows

You can use this test at any time: .bash{_profile, _login,rc}, .profile, etc.
Make sure you read up on BASH in the manpages and understand the order of the
resource control files for the shell when it's executed.

-- 
Chad Walstrom <chewie at wookimus.net>                 | a.k.a. ^chewie
http://www.wookimus.net/                            | s.k.a. gunnarr
Get my public key, ICQ#, etc.  Send email w/the Subject: "get help"