Tôi có thể truy cập biến $ USER ban đầu từ trong tập lệnh chạy với `sudo` không?


19

Một câu hỏi kỳ lạ, tôi biết. Đây là kịch bản:

echo $USER

Đây là lệnh tôi sử dụng để chạy nó:

sudo ./myscript.sh

Ngay bây giờ nó in "root" nhưng tôi muốn nó in jon, tên người dùng của tôi. Có cách nào để làm điều đó bằng cách thay đổi tập lệnh chứ không phải lệnh?


Vâng, có nhiều cách để làm điều đó. Nhưng có lẽ cách dễ nhất là giải quyết vấn đề. Gọi tập lệnh đó từ tập lệnh khác, nơi bạn 'lưu' id người dùng của mình để 'tập lệnh sudo' có thể truy cập tập lệnh đó.
sudodus

Câu trả lời:


28

Sử dụng SUDO_USERbiến môi trường thay vì USER.

sudođặt tên của người dùng đã chạy nó trong SUDO_USERbiến môi trường:

ek@Io:~$ sudo sh -c 'echo $USER'
[sudo] password for ek:
root
ek@Io:~$ sudo sh -c 'echo $SUDO_USER'
ek

Vì vậy, bạn chỉ có thể thay thế $USERbằng $SUDO_USERtrong tập lệnh của mình:

echo $SUDO_USER

Đọc thêm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.