bash expands $1 in strange new way

Mark J. Reed markjreed@gmail.com
Fri Dec 25 04:49:00 GMT 2009


On Thu, Dec 24, 2009 at 10:19 PM, David Arnstein wrote:
> I have a bash shell script named xplo that worked as desired under
> cygwin 1.5. It fails under cygwin 1.7.

Your shell script is incorrect, and I don't see how it worked under
1.5. This line:

>        set EXPLOR='/cygdrive/c/windows/explorer.exe'

does NOT set a variable named EXPLOR.  Instead, it sets the first
positional argument ($1) to the string
"EXPLOR=/cygdrive/c/windows/explorer.exe".  Whatever the old value of
$1 was, it's now gone.

To fix, get rid of the "set".  In sh and derivatives, "set" sets the
positional arguments (and optionally flags that affect the shell's
behavior); it does NOT set variables.  Just use the assignment syntax
(var=value) by itself for that.

-- 
Mark J. Reed <markjreed@gmail.com>

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list