Quentin Le Bévillon Quentin Le Bévillon - 1 year ago 130
Bash Question

shell builtin with redirection

We are working on a shell (school project). We don't understand a behaviour.
Why builtins are not acting when redirected ?


cd - | command

does not change the directory.


export NAME=VALUE | command

does not create the variable.

Thank you.

Answer Source

Links of a pipeline are run in forked subshells.

In bash, you can print the PID of the current process with $BASHPID, so something like:

self(){ echo $BASHPID; } ; self ; self >&2 | self; self

should give you something like:


with the middle two PIDs being different than the first and the last (the mother shell) (in some shells, the first or the last link is run in the mother shell, but not in bash).

Changing the current directory directory of exporting a value in a subshell won't affect the parent shell in any way whatsoever.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download