$ SUDO_USER tidak berfungsi jika Anda menggunakan sudo su -
.
Ini juga membutuhkan banyak pemeriksaan - jika $USER == 'root'
kemudian dapatkan $SUDO_USER
.
Alih-alih whoami
menggunakan perintah who am i
. Ini menjalankan who
perintah yang difilter untuk sesi saat ini. Ini memberi Anda lebih banyak info daripada yang Anda butuhkan. Jadi, lakukan ini hanya untuk mendapatkan pengguna:
who am i | awk '{print $1}'
Atau (dan lebih sederhana) Anda dapat menggunakan logname
. Itu melakukan hal yang sama seperti pernyataan di atas.
Ini memberi Anda nama pengguna yang masuk ke sesi.
Ini bekerja terlepas dari sudo
atau sudo su [whatever]
. Ini juga berfungsi terlepas dari berapa kali su
dan sudo
dipanggil.
who am i
jawabannya di sini.who am i
adalahwho mom likes
. Pilihanmu.who
mengembalikan 2 baris untuk saya, keduanya berisi nama saya, danwho am i
tidak ada yang dikembalikan. Ada bantuan?who am i
tidak melakukan apa-apa, tampaknya sederhanawho
, jadiwho | awk '{print $1}'
berfungsi seperti yang diharapkan;)awk
menginstal, Anda juga dapat menggunakancut
:who mom likes | cut -d' ' -f1
ataused
karena alasan tertentu:who mom likes | sed -n 's/^\([^ ]*\).*/\1/p'
Saya pikir $ SUDO_USER valid.
sumber
sudo env
menunjukkanSUDO_USER
tetapisudo echo $SUDO_USER
tidak mencetak apa-apa ...sudo echo $SUDO_USER
, bash mengevaluasi $ SUDO_USER sebelum menjalankan sudo. coba skrip yang diposting dalam solusi ini, berhasil.echo ${SUDO_USER:-$USER}
untuk menangkap keduanyasudo
dan non-sudo berjalan. Tapi jawaban evanlogname
terdengar lebih mudah$SUDO_USER
tidak bekerja dengansudo su -
, tetapilogname
selalu berhasil.Berikut adalah cara mendapatkan nama pengguna dari orang yang memanggil skrip tidak peduli apakah sudo atau tidak:
atau versi yang lebih pendek
sumber
user=${SUDO_USER:-$(whoami)}
atauuser=$(logname)
who am i | awk '{print $1}'
tidak bekerja untuk saya tetapiwho|awk '{print $1}'
akan melayani pekerjaan itusumber
Aneh, sistem membedakan antara UID nyata dan efektif , tetapi saya tidak dapat menemukan program yang mengekspor ini di tingkat shell.
sumber
Menggunakan
whoami
,who am i
,who
,id
atau$SUDO_USER
tidak di sini.Sebenarnya,
who
tidak pernah menjadi solusi untuk pertanyaan tersebut, karena hanya akan mencantumkan pengguna yang masuk, yang mungkin lusinan ...Di mata saya, satu-satunya jawaban yang berharga adalah penggunaan
logname
.Semoga ini membantu
rampok
sumber
Jika itu UID yang Anda cari (berguna untuk buruh pelabuhan), maka ini berfungsi:
sumber