Bash export command
linux, ubuntu
Solution
`export` is a Bash builtin, `echo` is an executable in your `$PATH`. So `export` is interpreted by Bash as is, without spawning a new process.
You need to get Bash to interpret your command, which you can pass as a string with the `-c` option:
bash -c "export foo=bar; echo \$foo"
ALSO:
Each invocation of `bash -c` starts with a fresh environment. So something like:
bash -c "export foo=bar"
bash -c "echo \$foo"
will not work. The second invocation does not remember `foo`.
Instead, you need to chain commands separated by `;` in a single invocation of `bash -c`:
bash -c "export foo=bar; echo \$foo"
Problem
I am encountering a strange problem with my 64-bit Ubuntu - on the export command. Basically, I have got a VM installation on Ubuntu on my Windows 7 system, and I am trying to pass commands from my Windows system to my VM installation using a custom (given by client) software. So, on my VM, when I do: ``` export foo=bar echo $foo ``` everything works as expected. However, when I do the same through the custom software (which basically passes the Linux command as a string to the bash shell), I get: ``` export: command not found ``` I tried looking at the shell (using the custom software), using: ``` echo $SHELL > shell.txt ``` And I get /bin/bash which is expected and I still get the "export: command not found error". How can I fix this?