Tôi muốn tạo một tập lệnh bash phải được thực thi bằng sudo nhưng nên tính đến tên của người dùng không phải sudo đã thực thi nó. Vì vậy, nếu người dùng bob
chạy sudo ./myscript.sh
tôi muốn myscript.sh
biết bob
là người đã thực hiện nó.
Hãy nhìn vào bên trong myscript.sh
:
USER=$(whoami)
# Do something that takes into account the username.
Làm thế nào tôi có thể biết tên của người dùng đã sinh ra quá trình? Cụ thể hơn, tôi nên sử dụng cái gì thay vì whoami
để có được bob
và không root
?
#!/usr/bin/env bash
trên các tập lệnh bash của tôi.
sh
hoặc một cái gì đó khác.
USER=$(whoami)
. Lưu ý rằngUSER
đã tồn tại như một biến nội bộ shell. Ngoài ra, nếu đó là tập lệnh bash, đừng chạy nó bằng cách sử dụngsh
tập hợp các tính năng tương thích POSIX.