Ngoài ra, các biến này có luôn khớp với tên người dùng hiện đang đăng nhập không (chúng có trên hệ thống Debian của tôi) không? Tôi có thể giả sử tính khả dụng của chúng trong các hệ thống Unix (giống như) khác không?
Tôi cũng tò mò tại sao người ta sẽ sử dụng whoami
thay vì chỉ đọc bất kỳ biến nào trong số này.
USER
và USERNAME
là các biến môi trường thông thường, có nghĩa là, nếu bạn muốn, bạn có thể đặt chúng thành các giá trị tùy ý. Chỉ cần gõ USER=xyz
. Nói cách khác, ngay cả khi các biến đó tồn tại, không có gì đảm bảo rằng giá trị của chúng khớp với tên người dùng hiện đang đăng nhập.
guarantee
, ý tôi là theo mặc định (nghĩa là người dùng không thay đổi chúng).
sudo whoami
vàsudo echo $USER
sudo echo $USER
, vỏ mở rộng $USER
, sau đó gọi sudo
. Vì vậy, tất nhiên nó không tạo ra cùng một đầu ra như whoami
. Giống như sudo whoami
, sudo sh -c 'echo $USER'
đầu ra (thường) root
. Về nhận xét của bạn về việc whoami
sử dụng EUID , lưu ý rằng sudo whoami
sẽ xuất root
ngay cả khi đã whoami
sử dụng UID. sudo
đặt cả EUID và UID cho lệnh mà nó chạy (ngoại trừ trong trường hợp rất bất thường mà bạn định cấu hình rõ ràng để hành xử theo cách khác). So sánh sudo id -u
với sudo id -ru
.
man
trang,whoami
báo cáo tên được liên kết với ID người dùng hiệu quả của bạn. Điều đó có nghĩa là nó sẽ trả về một cái gì đó khác nếu bạn đang sử dụngsudo
hoặc chạy một tập tin thực thi setuid. Nếu bạn đãsudo
thiết lập, hãy thửsudo whoami
ví dụ.