OS X'teki komut satırı aracılığıyla aktif kullanıcının adını nasıl alabilirim?
OS X'teki komut satırı aracılığıyla aktif kullanıcının adını nasıl alabilirim?
Yanıtlar:
'whoami' kullanımdan kaldırıldığından, kullanımı muhtemelen daha ileri uyumludur:
id -un
whoami
Leopard'daki man sayfası , ile değiştirildiğini doğruluyor id
.
OS X'teki terminalin tıpkı unix gibi olduğundan oldukça eminim, bu yüzden komut şöyle olacaktır:
whoami
Şu anda üzerimde bir Mac'im yok, bu yüzden yanılıyorsam biri beni düzeltsin.
NOT - Yardımcı whoami
program kullanımdan kaldırılmıştır ve eşdeğerdir id -un
. Size mevcut kullanıcıyı verecek
Via burada
/ Dev / console sahibinin kontrol edilmesi iyi çalışıyor gibi görünüyor.
stat -f "%Su" /dev/console
Şu anda sisteme kimin giriş yaptığını bilmek istiyorsanız:
$ w 5 gün 15:56:14, 20:58, 6 kullanıcı, ortalama yük: 0.43, 0.53, 0.50 KULLANICI TTY GİRİŞİ @ IDLE JCPU PCPU NE me pts / 2 Cum19 1: 03d 0.98s 0.98s - / bin / bash me pts / 3 09:55 6: 00d 0,43s 0,43s / bin / bash me pts / 5 15:56 0.00s 0.23s 0.00sw
(Bu bir Linux sistemindendir; OS X'teki biçimlendirme biraz farklı olabilir, ancak bilgiler yaklaşık olarak aynı olmalıdır.)
Birden fazla giriş oturumu olabilir; Sonuçta UNIX, çok kullanıcılı bir sistem olacak şekilde tasarlanmıştır.
logname
Kullanıcı bir sudo
işlem yapıyor olsa bile, o anda oturum açmış olan kullanıcının kullanıcı adını görmek için Linux veya MacOS altında BSD Genel Komutlar Kılavuzundaki komutu da kullanabilirsiniz . Bu, örneğin sudo ile sistem çapında bir paket yüklerken bir kullanıcının crontab dosyasını değiştirirken yararlıdır:crontab -u $(logname)
Başına man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
Soru tam olarak cevaplanmadı IMHO. Açıklamaya çalışacağım: Bir bash kabuğu komut prosedürünü planlayan bir crontab girdim var, bu da dosyalarımın bir kısmını temizliyor; ve tamamlandığında, OS X bildirim merkezini (komutla ) kullanarak bana bir bildirim gönderir osascript -e 'display notification ...
. Birisi (örneğin, eşim veya kızım) bilgisayarın mevcut kullanıcısını ona geçirir ve beni arka planda bırakırsa , bildirim gönderilirken cron betiği başarısız olur .
Öyleyse, şu anki kullanıcı kim demek Başka insanlar beni arka planda bırakarak etkili kullanıcı haline geldi mi? Do stat -f "%Su" /dev/console
getirileri mevcut aktif kullanıcı adı?
Cevap Evet; şimdi crontab kabuk betiğim şu şekilde değiştirildi:
...
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
İki yol var-
whoami
veya
echo $USER
Bunu ortam değişkenlerinden de alabilirsiniz, ancak bu muhtemelen güvenli değildir, bu yüzden Andrew'un cevabıyla giderim.
printenv USER
Node gibi bir uygulamadan almanız gerekiyorsa, bunu gibi ortam değişkenlerinden almak daha kolaydır.
process.env.USER
.
'Aktif kullanıcıyı' tanımlayın.
Soru 'oturum açmış kullanıcı kim' ise, 'kimim ben' veya 'whoami' sorun değil (farklı cevaplar verseler de - 'whoami' sadece bir kullanıcı adını bildiriyor; 'kimim ben' terminalde rapor veriyor ve giriş zamanı da).
Soru 'kabuğun etkin kimliği hangi kullanıcı kimliği' ise, o zaman 'kimlik' kullanmak genellikle daha iyidir. Bu, gerçek ve etkili kullanıcı kimliği ve grup kimliği ile ek grup kimliklerini de rapor eder. Bu, kabuğun SUID veya SGID çalıştırması önemli olabilir.