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?

Original source

Related problems