Fungsi kurung kurawal akan berjalan dalam proses shell panggilan, kecuali jika mereka membutuhkan subkulit mereka sendiri yaitu:
- ketika Anda menjalankannya di latar belakang dengan
&
- ketika Anda menjalankannya sebagai tautan di saluran pipa
Pengalihan atau env ekstra. variabel tidak akan memaksa subkulit baru:
hw(){
echo hello world from $BASHPID
echo var=$var
}
var=42 hw >&2
echo $BASHPID #unexports var=42 and restores stdout here
Jika Anda mendefinisikan fungsi dengan tanda kurung alih-alih ikal:
hw()(
echo hello world from $BASHPID
)
hw
echo $BASHPID
itu akan selalu berjalan dalam proses baru.
Substitusi perintah $()
juga selalu membuat proses dalam bash (tetapi tidak dalam ksh jika Anda menjalankan builtin di dalamnya).