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?
command-line
bash
sudo
environment-variables
Jonathan
sumber
sumber
Jawaban:
Gunakan
SUDO_USER
variabel lingkungan sebagai gantiUSER
.sudo
menempatkan nama pengguna yang menjalankannya diSUDO_USER
variabel lingkungan:Jadi Anda cukup mengganti
$USER
dengan$SUDO_USER
dalam skrip Anda:Bacaan lebih lanjut
man sudo
, di bagian "LINGKUNGAN":Halaman manual juga menjelaskan beberapa variabel lingkungan terkait lainnya yang ditentukan oleh
sudo
yang mungkin berguna, sepertiSUDO_UID
danSUDO_GID
Mendapatkan $ USER di dalam skrip shell saat menjalankan dengan sudo?
sumber