ฉันสามารถเข้าถึงตัวแปร US $ ที่มาจากภายในสคริปต์ที่รันด้วย `sudo 'ได้หรือไม่


19

คำถามแปลก ๆ ฉันรู้ นี่คือสคริปต์:

echo $USER

นี่คือคำสั่งที่ฉันใช้เรียกใช้:

sudo ./myscript.sh

ตอนนี้มันพิมพ์ "root" แต่ฉันต้องการให้พิมพ์jonชื่อผู้ใช้ของฉัน มีวิธีที่จะทำเช่นนั้นโดยการเปลี่ยนสคริปต์ไม่ใช่คำสั่งหรือไม่


ใช่มีวิธีที่จะทำ แต่บางทีวิธีที่ง่ายที่สุดคือการแก้ไข เรียกสคริปต์นั้นจากสคริปต์อื่นที่คุณ 'บันทึก' รหัสผู้ใช้ของคุณเพื่อให้ 'สคริปต์ sudo' สามารถเข้าถึงได้
sudodus

คำตอบ:


28

ใช้ตัวแปรสภาพแวดล้อมแทนSUDO_USERUSER

sudoวางชื่อของผู้ใช้ที่รันในSUDO_USERตัวแปรสภาพแวดล้อม:

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

ดังนั้นคุณสามารถแทนที่$USERด้วย$SUDO_USERในสคริปต์ของคุณ:

echo $SUDO_USER

อ่านเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.