Bisakah saya mengakses variabel $ USER yang berasal dari dalam skrip yang dijalankan dengan `sudo`?


19

Pertanyaan aneh, saya tahu. Ini skripnya:

echo $USER

Inilah perintah yang saya gunakan untuk menjalankannya:

sudo ./myscript.sh

Sekarang ini mencetak "root" tetapi saya ingin mencetak jon, nama pengguna saya. Apakah ada cara untuk melakukan itu dengan mengubah skrip, dan bukan perintah?


Ya, ada cara untuk melakukannya. Tapi mungkin cara termudah adalah mengatasinya. Panggil skrip itu dari skrip lain, tempat Anda 'menyimpan' id pengguna Anda sehingga 'skrip sudo' dapat mengaksesnya.
sudodus

Jawaban:


28

Gunakan SUDO_USERvariabel lingkungan sebagai ganti USER.

sudomenempatkan nama pengguna yang menjalankannya di SUDO_USERvariabel lingkungan:

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

Jadi Anda cukup mengganti $USERdengan $SUDO_USERdalam skrip Anda:

echo $SUDO_USER

Bacaan lebih lanjut

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.