Diferença entre $ LOGNAME e logname

12

quando os comandos echo $LOGNAMEou lognamenormalmente são executados, obtêm o mesmo resultado, como a seguir:

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

Então, existe alguma diferença entre eles?

Pandya
fonte

Respostas:

17

Nas variáveis ​​de ambiente ,

$LOGNAMEé o mesmo $USERque dá

O nome do usuário conectado no momento. Esta variável é definida pelo sistema. Você provavelmente não deve alterar seu valor manualmente.

A partir de man logname

logname - imprime o nome de login do usuário


Expained usado de forma diferente pelo seguinte exemplo:

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:~$

Aqui você pode ver a diferença após o login como root no terminal,

  • $LOGNAMEfornece o nome do usuário atualmente conectado no terminal (ie root)
  • Considerando que lognameimprima o nome de login do usuário que efetuou login na sessão (ou seja pandya)
Pandya
fonte
6

O nome do log do utilitário foi quebrado no 16.04, aparentemente de propósito, porque é possível hackear o valor que ele retorna, o que poderia ser uma falha de segurança. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Eu estava usando o nome do log em alguns scripts e achei útil porque sempre retornava o mesmo valor (meu nome de login), independentemente de eu estar ligando de um meu próprio nível ou de uma chamada de sudo, enquanto as variáveis ​​de ambiente $ USER e $ LOGNAME não. Eu não estava preocupado com alguém invadir meu computador e modificar o valor que ele retorna. Infelizmente .... Encontrei uma solução alternativa. Criei um arquivo no meu diretório pessoal, como tal

echo $USER > ~/.logname

Quando quero acessar meu nome de log (por exemplo, atribuindo a uma variável Bash g_logname), faço-o da seguinte maneira:

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

Isso funciona para mim, seja eu mesmo ou no nível raiz através do sudo, que mantém a atribuição de "~" como meu diretório pessoal. Eu posso criar um arquivo .logname para o diretório inicial de cada usuário no sistema. Sim, alguém poderia invadir meu computador e alterar esses arquivos, mas não estou realmente preocupado com isso. Eu só quero que meus scripts funcionem.

Randyman99
fonte