Why does sh/bash set command line parameter values when trying to set environment variable?
- by Touko
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