Bagaimana cara mendapatkan nama pengguna aktif melalui baris perintah di OS X?
Bagaimana cara mendapatkan nama pengguna aktif melalui baris perintah di OS X?
Jawaban:
karena 'whoami' telah usang, mungkin lebih kompatibel untuk digunakan:
id -un
whoami
di Leopard mengonfirmasi bahwa itu telah diganti oleh id
.
EDIT
Utilitas whoami telah ditinggalkan oleh utilitas id (1), dan setara dengan id -un
. Perintah id -p
ini disarankan untuk penggunaan interaktif normal.
Saya cukup yakin terminal di OS X sama seperti unix, jadi perintahnya adalah:
whoami
Saya tidak memiliki masalah pada saya saat ini jadi seseorang mengoreksi saya jika saya salah.
CATATAN - whoami
Utilitas telah usang, dan setara dengan id -un
. Ini akan memberi Anda pengguna saat ini
Lewat sini
Memeriksa pemilik / dev / console tampaknya berfungsi dengan baik.
stat -f "%Su" /dev/console
Jika Anda ingin mengetahui siapa yang saat ini masuk ke sistem:
$ w 15:56:14 naik 5 hari, 20:58, 6 pengguna, rata-rata memuat: 0,43, 0,53, 0,50 USER TTY LOGIN @ IDLE JCPU PCPU APA saya poin / 2 Jumat 1: 03m 0,98s 0,98s - / bin / bash saya poin / 3 09:55 6:00m 0,43s 0,43s / bin / bash saya poin / 5 15:56 0.00s 0.23s 0.00sw
(Ini dari sistem Linux; pemformatan pada OS X mungkin sedikit berbeda, tetapi informasinya harus hampir sama.)
Mungkin ada beberapa sesi login; UNIX dirancang untuk menjadi sistem multi-pengguna.
Anda juga dapat menggunakan logname
perintah dari BSD General Commands Manual di Linux atau MacOS untuk melihat nama pengguna pengguna yang saat ini masuk, bahkan jika pengguna sedang melakukan sudo
operasi. Ini berguna, misalnya, saat memodifikasi crontab pengguna saat menginstal paket seluruh sistem dengan sudo:crontab -u $(logname)
Per man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
Pertanyaannya belum sepenuhnya terjawab, IMHO. Saya akan mencoba menjelaskan: Saya memiliki entri crontab yang menjadwalkan prosedur perintah bash shell, yang pada gilirannya melakukan beberapa pembersihan file saya; dan, setelah selesai, mengirimkan notifikasi kepada saya menggunakan pusat notifikasi OS X (dengan perintah osascript -e 'display notification ...
). Jika seseorang (misalnya istri atau anak perempuan saya) mengalihkan pengguna komputer saat ini ke dia, membiarkan saya di latar belakang, skrip cron gagal saat mengirim pemberitahuan.
Jadi, Siapa pengguna saat ini artinya Apakah beberapa orang lain menjadi pengguna yang efektif meninggalkan saya di latar belakang ? Apakah stat -f "%Su" /dev/console
mengembalikan nama pengguna aktif saat ini ?
Jawabannya iya; Jadi, sekarang skrip crontab shell saya telah dimodifikasi dengan cara berikut:
...
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ]
then /usr/bin/osascript -e \
'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"'
fi
Ada dua cara-
whoami
atau
echo $USER
Anda juga dapat mengambilnya dari variabel lingkungan, tetapi itu mungkin tidak aman, jadi saya akan menggunakan jawaban Andrew.
printenv USER
Jika Anda perlu mengambilnya dari aplikasi, seperti Node, lebih mudah mendapatkannya dari variabel lingkungan, seperti
process.env.USER
.
Tentukan 'pengguna aktif'.
Jika pertanyaannya adalah 'siapa pengguna yang login', maka 'siapa saya' atau 'whoami' tidak masalah (meskipun jawaban mereka berbeda - 'whoami' hanya melaporkan nama pengguna; 'siapa saya' melaporkan di terminal dan waktu login juga).
Jika pertanyaannya adalah 'ID pengguna mana yang merupakan ID efektif untuk shell', maka lebih baik menggunakan 'id'. Ini melaporkan ID pengguna dan ID grup yang nyata dan efektif, dan ID grup tambahan juga. Ini mungkin masalah jika shell menjalankan SUID atau SGID.