quem, whoami e “quem sou eu”

6

Eu posso entender os comandos who e whoami , mas o que exatamente acontece quando digito:

who am i

e

who am

Estou no Ubuntu, nada acontece depois deles!

Por que o Linux / UNIX não responde com uma mensagem de erro (algo na linha de "argumentos desconhecidos" para who ), ou apenas responde com a saída de who ?

    
por A. N. Other 10.07.2017 / 17:31

3 respostas

4

Se whoami não produzir nada, provavelmente indica que seu shell não é um shell de login. Não há nenhum usuário associado à entrada padrão de who , por isso who não produz nada - isso não é um erro, pois não gera uma mensagem de erro.

Se você correr

xterm -ls

para abrir um terminal com um shell de login, você deve achar que whoami e who am i funcionam bem. O mesmo vale para um login remoto usando por exemplo, SSH.

    
por 10.07.2017 / 17:38
4

Quando você digita:

$ who am i

Em um shell (qualquer shell), a primeira palavra ( who ) é analisada como "o comando".
Então, quem é pesquisado no PATH, e depois que é encontrado, todos os outros parâmetros / palavras / argumentos são dados ao comando como argumentos.

É o trabalho de who interpretar os argumentos.

Na verdade, no linux, o manual de quem tem a dizer sobre 'sou eu':

If ARG1 ARG2 given, -m presumed: 'am i' or 'mom likes' are usual.

Portanto, who imprimirá apenas "hostname e usuário associado a stdin" ( -m option).

Se não houver usuário associado a stdin, nada será impresso.

    
por 11.07.2017 / 02:32
1

Não é possível replicar:

ghoti@home:~
$ who am i
ghoti    pts/0        2017-07-10 08:33 (38.142.104.170)
ghoti@home:~
$ cat /etc/issue
Ubuntu 16.04.2 LTS \n \l
    
por 10.07.2017 / 17:34

Tags