Why does sh/bash set command line parameter values when trying to set environment variable?

Posted by Touko on Stack Overflow See other posts from Stack Overflow or by Touko
Published on 2010-05-26T13:38:49Z Indexed on 2010/05/26 13:41 UTC
Read the original article Hit count: 255

A question on basics : While tuning environment variables for a program launched from a script, I ended up with somewhat strange behaviour with sh (which seems to be actually linked to bash) : variable setting seems to mess up with command-line parameters.

Could somebody explain why does this happen?

A simple script:

#! /bin/sh

# Messes with $1 ??
set ANT_OPTS=-Xmx512M
export ANT_OPTS

# Works
# export ANT_OPTS=-Xmx512M

echo "0 = $0"
echo "1 = $1"

When I run this with the upper alternative (set + export), the result is as following:

$ ./test.sh foo
0 = ./test.sh
1 = ANT_OPTS=-Xmx512M

But with lower alternative (export straight), the result is as I supposed:

$ ./test.sh foo
0 = ./test.sh
1 = foo

There is surely logical explanation, I just haven't figured it out yet. Somebody who does have idea?

br, Touko

© Stack Overflow or respective owner

Related posts about bash

Related posts about shell-scripting