According to Section 3.7.1 of the Bash Manual, the variable assignment should be applied at the beginning of a command line
For example
  DIR = / tmp ls $ DIR   should behave as I have written "ls / tmp" - and the variable should not continue after executing the DIR command.
Signin Bash (GNU Bash, Version 3.2.51 (24) -Relize (i686-pc-cygwin) does not appear to do so - The above order behavior Note that this is a semicolon that works ("DIR = / tmp; ls $ DIR to add" DIR = / tmp echo $ DIR "," DIR = / tmp set " Etc. It is confirmed by other tests like.
"), but leaves the defining variable after the command.
Why is it not expected?
< / Div>
This works - but not in context that you are trying to work on it.
  DIR = / tmp ls $ DIR    Environment variable DIR is set to  ls  - but when the shell does not extend $ $ DIR command, the behavior of the Born Shell is like this; Corn Shell and Bash Behavior are inheritors. 
 You can see that the DIR is set by changing  ls $ DIR  to  env . ; It will show an external (not built) command environment. 
In this example, think about it for a moment: what you have typed is compared to 9 additional characters:
  ls / tmp   If you want to set and remove it, then this is the trick:
  (DIR = / tmp; Ls $ DIR)    Shell is set before evaluating  ls $ DIR , but the whole command is run in a sub-shell so there is no one in it, the effect on the Incol shell. 
Comments
Post a Comment