kiedy echo $LOGNAME
lub logname
polecenia są uruchamiane normalnie uzyskują taki sam wynik, jak poniżej:
pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya
Czy jest jakaś różnica między nimi?
environment-variables
Pandya
źródło
źródło
Nazwa dziennika narzędzia jest zepsuta w 16.04, najwyraźniej celowo, ponieważ możliwe jest zhakowanie zwracanej wartości, co może być wadą bezpieczeństwa. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Używałem nazwy loga w niektórych skryptach i uznałem ją za przydatną, ponieważ zawsze zwracała tę samą wartość (moją nazwę logowania) bez względu na to, czy wywoływałem ją z mój własny poziom lub wywołanie sudo, podczas gdy zmienne środowiskowe $ USER i $ LOGNAME nie. Nie martwiłem się, że ktoś włamie się na mój komputer i zmodyfikuje wartość, którą zwraca. Niestety .... Znalazłem obejście. Jako taki utworzyłem plik w moim katalogu domowym
Kiedy chcę uzyskać dostęp do mojej nazwy dziennika (np. Przypisując zmienną Bash g_logname), robię to w ten sposób:
Działa to dla mnie, zarówno jako ja, jak i na poziomie administratora poprzez sudo, który zachowuje przypisanie „~” jako mojego katalogu domowego. Mogę utworzyć plik .logname dla katalogu domowego każdego użytkownika w systemie. Tak, ktoś może włamać się na mój komputer i zmienić te pliki, ale tak naprawdę nie martwię się o to. Chcę tylko, żeby moje skrypty działały.
źródło