hvn@archhvn: ~ () $ y=6; echo $$ $y; bash -c 'echo $$ $y'$$ là biến đặc biệt của bash, in ra process id (PID) của process hiện tại.
2461 6
2586
hvn@archhvn: ~ () $ export z=7; echo $$ $z; bash -c 'echo $$ $z'
2461 7
2599 7
Câu lệnh thứ nhất:
gán y = 6; in ra process ID của bash shell đang dùng và giá trị biến y đã gán,
chạy 1 sub-shell (chạy chương trình "bash" bên trong chương trình "bash") và thử in ra pid mới cùng với giá trị biến y.
Kết quả là biến y không chứa giá trị nào cả ở sub-shell mới tạo.
Hình ảnh của lệnh ps sẽ giúp bạn hình dung rõ hơn điều gì xảy ra (với một câu lệnh tương tự):
hvn@archhvn: ~ () $ y=1; bash -c 'echo VALUE OF Y is: $y;ps awwxf | tail -f -n4'
hvn@archhvn: ~ () $ export y=1; bash -c 'echo VALUE OF Y is: $y;ps awwxf | tail -f -n4'Câu lệnh thứ 2:
với export, biến y đã được "xuất khẩu" sang sub-shell, vì thế nên khi sử dụng export, giá trị của biến y trả về bằng giá trị biến y ở parent shell
No comments:
Post a Comment