Skip to main content
Clarification on question.
Source Link
StoneThrow
  • 2k
  • 8
  • 28
  • 52

This question follows from this one and one of its answers' recommendation to read Linuxtopia - Chapter 20. Subshells.

I'm a bit confused by this statement at the Linuxtopia site:

subshells let the script do parallel processing, in effect executing multiple subtasks simultaneously.
https://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/subshells.html

Does this mean that subshells, run from a script, are always run in parallel to the original script? Experimentally, this does not appear to be the case, but I'd be grateful for expert confirmation one way or the other.

#! /usr/bin/bash

# This script reliably prints:
# hello
# world
# 0
# ...implying that the the subshell is not run in parallel with this script.

(echo hello;
echo world)

echo $?

.

#! /usr/bin/bash

# This script prints:
# 0
# hello
# world
# ...implying that the the subshell is run in parallel with this script.

(echo hello;
echo world) &

echo $?

Is the use of & what the Linuxtopia site might have meant by "[letting] the script do parallel processing"?


Note: I'm familiar with the concept of suffixing commands with & in bash...it runs said command as a background process. So my question is more about whether command(s) executed in a subshell are run as background/parallel process by default, or if addition of the & here, as well, is what causes the background/parallel execution. The wording of the Linuxtopia article, to me, implied the former, which doesn't appear to match observation.

This question follows from this one and one of its answers' recommendation to read Linuxtopia - Chapter 20. Subshells.

I'm a bit confused by this statement at the Linuxtopia site:

subshells let the script do parallel processing, in effect executing multiple subtasks simultaneously.
https://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/subshells.html

Does this mean that subshells, run from a script, are always run in parallel to the original script? Experimentally, this does not appear to be the case, but I'd be grateful for expert confirmation one way or the other.

#! /usr/bin/bash

# This script reliably prints:
# hello
# world
# 0
# ...implying that the the subshell is not run in parallel with this script.

(echo hello;
echo world)

echo $?

.

#! /usr/bin/bash

# This script prints:
# 0
# hello
# world
# ...implying that the the subshell is run in parallel with this script.

(echo hello;
echo world) &

echo $?

Is the use of & what the Linuxtopia site might have meant by "[letting] the script do parallel processing"?

This question follows from this one and one of its answers' recommendation to read Linuxtopia - Chapter 20. Subshells.

I'm a bit confused by this statement at the Linuxtopia site:

subshells let the script do parallel processing, in effect executing multiple subtasks simultaneously.
https://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/subshells.html

Does this mean that subshells, run from a script, are always run in parallel to the original script? Experimentally, this does not appear to be the case, but I'd be grateful for expert confirmation one way or the other.

#! /usr/bin/bash

# This script reliably prints:
# hello
# world
# 0
# ...implying that the the subshell is not run in parallel with this script.

(echo hello;
echo world)

echo $?

.

#! /usr/bin/bash

# This script prints:
# 0
# hello
# world
# ...implying that the the subshell is run in parallel with this script.

(echo hello;
echo world) &

echo $?

Is the use of & what the Linuxtopia site might have meant by "[letting] the script do parallel processing"?


Note: I'm familiar with the concept of suffixing commands with & in bash...it runs said command as a background process. So my question is more about whether command(s) executed in a subshell are run as background/parallel process by default, or if addition of the & here, as well, is what causes the background/parallel execution. The wording of the Linuxtopia article, to me, implied the former, which doesn't appear to match observation.

Source Link
StoneThrow
  • 2k
  • 8
  • 28
  • 52

Are subshells run in parallel by default?

This question follows from this one and one of its answers' recommendation to read Linuxtopia - Chapter 20. Subshells.

I'm a bit confused by this statement at the Linuxtopia site:

subshells let the script do parallel processing, in effect executing multiple subtasks simultaneously.
https://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/subshells.html

Does this mean that subshells, run from a script, are always run in parallel to the original script? Experimentally, this does not appear to be the case, but I'd be grateful for expert confirmation one way or the other.

#! /usr/bin/bash

# This script reliably prints:
# hello
# world
# 0
# ...implying that the the subshell is not run in parallel with this script.

(echo hello;
echo world)

echo $?

.

#! /usr/bin/bash

# This script prints:
# 0
# hello
# world
# ...implying that the the subshell is run in parallel with this script.

(echo hello;
echo world) &

echo $?

Is the use of & what the Linuxtopia site might have meant by "[letting] the script do parallel processing"?