, когда команды echo $LOGNAME
или logname
выполняются в нормальном режиме, получают один и тот же результат, как показано ниже:
pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya
Итак, есть ли какая-то разница между ними?
От Переменные среды ,
$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
) Утилита 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 файл для корневого каталога каждого пользователя в системе. Да, кто-то мог взломать мой компьютер и изменить эти файлы, но я действительно не волнуюсь по поводу этого. Я просто хочу, чтобы мои сценарии работали.