Neden kullanıcı değiştirip su <username>
yürüttüğümde who am i
, oturum açtığım kullanıcı değil, oturum açtığım önceki kullanıcının çıktıları çıkıyor?
Neden kullanıcı değiştirip su <username>
yürüttüğümde who am i
, oturum açtığım kullanıcı değil, oturum açtığım önceki kullanıcının çıktıları çıkıyor?
Yanıtlar:
Muhtemelen yanlış komutu çalıştırıyorsunuz.
who
, kimin oturum açtığını, yani hangi kullanıcının terminale sahip olduğunu göstermek içindir. Bunun gibi bir satır döndürür:
ckhan pts/1 2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
whoami
size, onu çalıştıran kişinin etkin kullanıcı kimliğinin ne olduğunu göstermek anlamına gelir. Bunun gibi tek bir ad döndürür (ve çalıştırmaya eşdeğerdir id -un
):
ckhan
Kelimenin tam anlamıyla iki yoksayılmış argüman ( , ) ile who am i
koştu terminal yazmış olabilir düşünüyorum .who
am
i
Daha fazla ayrıntı için man who
ve bölümüne bakın man whoami
.
'Kim' komutu için 'Ubuntu 12.04.2 kılavuz sayfama göre' ben kimim '(ya da iki argümanı olan kim)' kim -m 'ile aynıdır ve size STDIN ile ilişkili ana bilgisayar adını ve kullanıcıyı vermelidir. Ancak 'ben kimim' ile hiçbir çıktı almıyorum. Man sayfası yanlış veya komutta bir hata var. Ne olursa olsun, daha önce ckhan tarafından cevaplandığı gibi, 'whoami' komutu size etkili kullanıcı kimliğiniz için kullanıcı adı verecektir. En azından Ubuntu 12.04.2'de hiçbir kimlik, 'ben kimim' veya 'whoami' size geçerli terminalde oturum açmış olan kişinin kullanıcı adını vermeyecektir. Çözüm olarak aşağıdakileri elde edebilirsiniz:
who | sed 's/ .*//'
Geçici çözüm :
ls -l `tty` | awk '{print $3}'
yerine çalışan who am i | awk '{print $1}'
. Aşağıdaki açıklama:
Birçok sistemde " who am i
", " " ile eşdeğerdir who -m
. Buradaki sorun bazı terminallerde " who -m
" hiçbir şey döndürmüyor!
Örnek 1 - xfce4 terminalinden çalıştırma
Pegasus ~ # whoami
root
Pegasus ~ # who am i
thomas pts/1 2017-08-19 11:15 (:0.0)
Pegasus ~ # who -m
thomas pts/1 2017-08-19 11:15 (:0.0)
Pegasus ~ # who
thomas tty8 2017-08-19 10:18 (:0)
thomas pts/1 2017-08-19 11:15 (:0.0)
thomas pts/5 2017-08-19 16:16 (:0.0)
Pegasus ~ # who am i | awk '{print $1}'
thomas
Pegasus ~ #
ancak bir gnome terminalinden Örnek 2 (aynı bilgisayar, aynı komutlar)
Pegasus ~ # whoami
root
Pegasus ~ # who am i
Pegasus ~ # who -m
Pegasus ~ # who
thomas tty8 2017-08-19 10:18 (:0)
thomas pts/1 2017-08-19 11:15 (:0.0)
thomas pts/5 2017-08-19 16:16 (:0.0)
Pegasus ~ #
Gnome terminalinin utmp girişleri eklememesinin bir sonucu olduğu görülüyor…
stat
Bunun yerine kullanın : Kullanıcı adları bazı nadir durumlarda boşluk içerebileceğinden, stat -c '%U' "$(tty)"
muhtemelen ayrıştırmamalısınız who am i
.
am
vei
yok sayılmazlar, POSIX tarafından belirtilirler: "POSIX yerel ayarında, çıktıyı,-m
seçenekle eşdeğer olarak çağıran kullanıcıyı tanımlamakla sınırlandırın ."