Menurut ini , menempatkan daftar perintah antara kurung kurawal menyebabkan daftar dieksekusi dalam konteks shell saat ini. Tidak ada subkulit yang dibuat .
Menggunakan ps
untuk melihat ini dalam aksi
Ini adalah hierarki proses untuk pipa proses yang dieksekusi langsung pada baris perintah. 4398 adalah PID untuk shell login:
sleep 2 | ps -H;
PID TTY TIME CMD
4398 pts/23 00:00:00 bash
29696 pts/23 00:00:00 sleep
29697 pts/23 00:00:00 ps
Sekarang ikuti hierarki proses untuk pipa proses antara kurung kurawal yang dieksekusi langsung pada baris perintah. 4398 adalah PID untuk shell login. Ini mirip dengan hierarki di atas yang membuktikan bahwa semuanya dijalankan dalam konteks shell saat ini :
{ sleep 2 | ps -H; }
PID TTY TIME CMD
4398 pts/23 00:00:00 bash
29588 pts/23 00:00:00 sleep
29589 pts/23 00:00:00 ps
Sekarang, ini adalah hierarki proses ketika sleep
pipa itu sendiri ditempatkan di dalam kurung kurawal (jadi ada dua level kurung kurawal)
{ { sleep 2; } | ps -H; }
PID TTY TIME CMD
4398 pts/23 00:00:00 bash
29869 pts/23 00:00:00 bash
29871 pts/23 00:00:00 sleep
29870 pts/23 00:00:00 ps
Mengapa bash
harus membuat subkulit untuk berjalan sleep
dalam kasus ke-3 ketika dokumentasi menyatakan bahwa perintah antara kurung kurawal dieksekusi dalam konteks shell saat ini?
{ sleep 2 | command ps -H; }