newgrpbắ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ý newgrpcũng khác nhau nếu bạn đang sử dụng bashhoặc ksh. kshthự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, newgrpkhô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 exectừ 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