newgrp
bắt đầu một subshell với nhóm bạn đã chỉ định. Vì vậy, dòng đó trong tập lệnh của bạn sẽ không hoàn thành cho đến khi hoàn thành phần con đó.
Việc xử lý newgrp
cũng khác nhau nếu bạn đang sử dụng bash
hoặc ksh
. ksh
thực hiện nó như là một lệnh tích hợp tương đương với exec /usr/bin/newgrp [group]
. Vì vậy, như exec
, newgrp
không bao giờ trở lại. (Xem một số tài liệu ở đây .)
Nếu bạn muốn nó trả về và muốn thực thi các lệnh trong lớp con đó với danh tính nhóm đã thay đổi, bạn có thể sử dụng chuyển hướng.
Ví dụ:
#!/bin/ksh
echo "Before newgrp"
/usr/bin/newgrp users <<EONG
echo "hello from within newgrp"
id
EONG
echo "After newgrp"
Thông báo: /usr/bin/newgrp
được gọi một cách rõ ràng để tránh những tiềm ẩn exec
từ ksh
. Lệnh cuối cùng trong tập lệnh đó sẽ chạy trong shell gốc, với danh tính nhóm ban đầu.
newgrp docker