Shell variables and positional parameters. The Bourne-Again Shell has some reserved variables, named: 1, 2, 3, 4, 5, 6, 7, 8 and 9 These are used for positional parameters (arguments) in shell scripts. That means: if you invoke a script like this ./script a b c then the variables 'a' 'b' and 'c' are available to the script, and the script assigns their values to positional parameters 1, 2 and 3. That is, inside the script, whenever the script uses $2, it uses the value of the second argument 'b'. That is to say, outside the script the values of a,b,c are $a, $b, $c, whereas inside the script the values are $1, $2, $3. You can quite happily create a directory that has a numerical name, like this: mkdir 2 but numerical names won't work for plain variables; you can't use them yourself, because it would confuse the shell (poor shell!). So trying to give a variable named 'a' the value 'zap' like this: a=zap will work, but trying to give a variable named 2 the value zap like this: 2=zap won't work (try it). You get the response: bash: 2=zap: command not found The value of a reserved shell variable may be accessed in the same way as you access the value of any other variable, that is, by prefixing it with the $ symbol, like this: echo $2 [back button returns]