когда команды echo $LOGNAME
или logname
выполняются нормально, получают тот же результат, как показано ниже
pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya
Итак, есть ли разница между ними?
environment-variables
Pandya
источник
источник
В 16.04 логин утилиты не работает, очевидно, специально, потому что можно взломать возвращаемое значение, что может быть недостатком безопасности. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Я использовал логин в некоторых скриптах и нашел его полезным, потому что он всегда возвращал одно и то же значение (мое логин), независимо от того, вызывал ли я его из мой собственный уровень или от вызова sudo, тогда как переменные окружения $ USER и $ LOGNAME - нет. Я не беспокоился о том, что кто-то взломает мой компьютер и изменит значение, которое он возвращает. Увы .... я нашел обходной путь. Я создал файл в моем домашнем каталоге как таковой
Когда я хочу получить доступ к своему логину (например, присваивая переменной Bash g_logname), я делаю так:
Это работает для меня, будь то я или на корневом уровне через sudo, который поддерживает назначение "~" в качестве моего домашнего каталога. Я могу создать файл .logname для домашнего каталога каждого пользователя в системе. Да, кто-то может взломать мой компьютер и изменить эти файлы, но я не очень беспокоюсь об этом. Я просто хочу, чтобы мои сценарии работали.
источник