Sub-shell Unterschiede zwischen bash und ksh

Habe ich immer geglaubt, dass eine sub-shell war nicht ein Kind-Prozess, aber ein anderes
shell-Umgebung, die in demselben Prozess.

Verwende ich einen grundlegenden Satz von built-ins:

(echo "Hello";read)

Auf einem anderen terminal:

ps -t pts/0
  PID TTY          TIME CMD
20104 pts/0    00:00:00 ksh

So, kein Kind-Prozess in der kornShell (ksh).

Geben Sie bash, es scheint, sich anders zu Verhalten, da Sie den gleichen Befehl:

  PID TTY          TIME CMD
 3458 pts/0    00:00:00 bash
20067 pts/0    00:00:00 bash

So, dass ein Kind-Prozess in der bash.

Aus der Lektüre der man-pages zu bash, es ist offensichtlich, dass ein anderer Prozess erzeugt eine sub-shell,
aber es fakes $$, die sneeky.

Ist der Unterschied zwischen bash und ksh erwartet, oder lese ich die Symptome falsch?

Edit: zusätzliche Informationen:
Läuft strace -f auf bash und ksh auf Linux zeigt, dass die bash Aufrufe clone zweimal für die sample-Befehl (es nicht nennen fork). Also bash sein könnte, die Verwendung von threads (ich habe versucht ltrace aber es core dumped!).
KornShell fordert weder fork, vfork noch clone.

InformationsquelleAutor cdarke | 2013-02-04
Schreibe einen Kommentar