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

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

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

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

10
задан 8 March 2016 в 16:37

2 ответа

От Переменные среды ,

$LOGNAME то же как $USER, который дает

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

От man logname

logname - печатают userВґs имя для входа в систему

<час>

Экс-страдальческий , по-другому использовал путем следования примеру:

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:~$
<час>

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

  • $LOGNAME дает название в настоящее время зарегистрированный пользователь в терминале (т.е. root)
  • принимая во внимание, что logname печать userВґs имя для входа в систему, кто вошел в систему сессия (т.е. pandya)
13
ответ дан 8 March 2016 в 16:37

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

echo $USER > ~/.logname

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

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

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

5
ответ дан 9 March 2016 в 02:37

Другие вопросы по тегам:

Похожие вопросы: