ทำไมตัวแปรจึงมองเห็นได้ใน subshell
Learning Bash Book กล่าวถึงว่า subshell จะสืบทอดเฉพาะตัวแปรสภาพแวดล้อมและ file descriptors ฯลฯ และจะไม่รับสืบทอดตัวแปรที่ไม่ได้ถูกส่งออก: $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ ฉันรู้ว่าเชลล์จะสร้างสอง subshell สำหรับ()และ for ./fileแต่ทำไมใน()กรณีที่ subshell ระบุvarตัวแปรแม้ว่าจะไม่ถูกส่งออกและใน./fileกรณีที่มันไม่ได้ระบุมัน? # Strace for () clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f24558b1a10) = 25617 # Strace for ./file clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, …