Разница между $ LOGNAME и логином

12

когда команды echo $LOGNAMEили lognameвыполняются нормально, получают тот же результат, как показано ниже

pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya

Итак, есть ли разница между ними?

Pandya
источник

Ответы:

17

Из переменных среды ,

$LOGNAMEто же самое, $USERчто дает

Имя текущего пользователя, вошедшего в систему. Эта переменная устанавливается системой. Вы, вероятно, не должны изменять его значение вручную.

От man logname

logname - распечатать имя пользователя


По- разному используется в следующем примере:

pandya@pandya-desktop:~$ sudo su
root@pandya-desktop:/home/pandya# echo $LOGNAME
root
root@pandya-desktop:/home/pandya# logname
pandya
root@pandya-desktop:/home/pandya# exit
exit
pandya@pandya-desktop:~$

Здесь вы можете увидеть разницу после входа в систему как root в терминале,

  • $LOGNAMEдает имя текущего вошедшего в систему пользователя в терминале (то есть root)
  • Принимая во внимание, что lognameнапечатайте имя пользователя, который вошел в сеанс (т.е. pandya)
Pandya
источник
Спасибо. Связанные unix.stackexchange.com/questions/446545/logname-no-login-name
Тим
6

В 16.04 логин утилиты не работает, очевидно, специально, потому что можно взломать возвращаемое значение, что может быть недостатком безопасности. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Я использовал логин в некоторых скриптах и ​​нашел его полезным, потому что он всегда возвращал одно и то же значение (мое логин), независимо от того, вызывал ли я его из мой собственный уровень или от вызова sudo, тогда как переменные окружения $ USER и $ LOGNAME - нет. Я не беспокоился о том, что кто-то взломает мой компьютер и изменит значение, которое он возвращает. Увы .... я нашел обходной путь. Я создал файл в моем домашнем каталоге как таковой

echo $USER > ~/.logname

Когда я хочу получить доступ к своему логину (например, присваивая переменной Bash g_logname), я делаю так:

declare g_logname="$(<~/.logname)";

Это работает для меня, будь то я или на корневом уровне через sudo, который поддерживает назначение "~" в качестве моего домашнего каталога. Я могу создать файл .logname для домашнего каталога каждого пользователя в системе. Да, кто-то может взломать мой компьютер и изменить эти файлы, но я не очень беспокоюсь об этом. Я просто хочу, чтобы мои сценарии работали.

Randyman99
источник