Como obtenho o nome do usuário ativo por meio da linha de comando no OS X?

94

Como obtenho o nome do usuário ativo por meio da linha de comando no OS X?

Lawrence Johnston
fonte

Respostas:

194

como 'whoami' ficou obsoleto, é provavelmente mais compatível com o futuro:

id -un
Kent
fonte
2
Em que sentido 'whoami' está obsoleto? Quem o declarou obsoleto?
Jonathan Leffler
2
@ Jonathan: A página do manual whoamido Leopard confirma que foi substituído por id.
Naaff
Agh! Por que eles estão mudando algo que existe desde o início dos tempos?
dmckee --- ex-moderador gatinho
28
whoami dizer? <boom-chacka>
Kent
27

Se desejar exibir o nome completo (em vez do nome de usuário), adicione o -Fsinalizador:

$ id -F
Andrew Havens
Andrew
fonte
1
-F é uma opção ilegal no Mavericks - quando isso começou a funcionar?
Eli B.
11

Quem sou eu

EDITAR

O utilitário whoami se tornou obsoleto pelo utilitário id (1) e é equivalente a id -un. O comando id -pé sugerido para uso interativo normal.

dfa
fonte
10

Por aqui

Verificar o proprietário de / dev / console parece funcionar bem.

stat -f "%Su" /dev/console

Lawrence Johnston
fonte
1
Isso funciona muito bem se você estiver conectado com ssh em uma máquina e quiser ver se um usuário está conectado localmente. Se não estiverem, o comando retornará "root".
Tim Dearborn
9

Tenho certeza que o terminal no OS X é igual ao Unix, então o comando seria:

whoami

Não tenho um mac no momento, então alguém me corrija se eu estiver errado.

NOTA - O whoamiutilitário tornou-se obsoleto e é equivalente a id -un. Ele lhe dará o usuário atual

Eric Koslow
fonte
4

Se você quiser saber quem está atualmente conectado ao sistema:

$ w
 15:56:14 até 5 dias, 20:58, 6 usuários, média de carregamento: 0,43, 0,53, 0,50
LOGIN DE TTY DO USUÁRIO @ IDLE JCPU PCPU O QUE
me pts / 2 sex19 1: 03m 0,98s 0,98s - / bin / bash
me pts / 3 09:55 6: 00m 0,43s 0,43s / bin / bash
me pts / 5 15:56 0,00s 0,23s 0,00sw

(Isso é de um sistema Linux; a formatação no OS X pode ser um pouco diferente, mas as informações devem ser as mesmas.)

Pode haver várias sessões de login; Afinal, o UNIX foi projetado para ser um sistema multiusuário.

efêmero
fonte
4

Você também pode usar o lognamecomando do Manual de Comandos Gerais do BSD no Linux ou MacOS para ver o nome de usuário do usuário atualmente conectado, mesmo se o usuário estiver executando uma sudooperação. Isso é útil, por exemplo, ao modificar o crontab de um usuário ao instalar um pacote de todo o sistema com sudo:crontab -u $(logname)

Por man logname:

LOGNAME(1)

NAME
    logname -- display user's login name
Adam Link
fonte
1
Esta é definitivamente a solução mais limpa e fácil. Ele funciona independentemente do usuário que está executando o comando.
Maxime Viargues
2

A pergunta não foi completamente respondida, IMHO. Vou tentar explicar: tenho uma entrada crontab que agenda um procedimento de comando bash shell, que por sua vez faz alguma limpeza de meus arquivos; e, quando terminar, envia uma notificação para mim usando o centro de notificações do OS X (com o comando osascript -e 'display notification ...). Se alguém (por exemplo, minha esposa ou minha filha) mudar o usuário atual do computador para ela, deixando-me em segundo plano, o script cron falha ao enviar a notificação.

Então, quem é o usuário atual significa: alguma outra pessoa se tornou o usuário efetivo, deixando-me em segundo plano ? Fazer stat -f "%Su" /dev/consoleretornos do atual usuário ativo nome?

A resposta é sim; então, agora meu script de shell crontab foi modificado da seguinte maneira:

...
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ]
then /usr/bin/osascript -e \
  'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"'
fi
Maurizio Loreti
fonte
2

obter nome de usuário no terminal MAC é fácil ...

Eu geralmente uso whoamino terminal ...

Por exemplo, neste caso, eu precisava disso para instalar o servidor Tomcat ...

insira a descrição da imagem aqui

Alireza
fonte
2

Existem duas maneiras-

whoami

ou

echo $USER
sr.robot
fonte
1

Você também pode recuperá-lo das variáveis ​​de ambiente, mas isso provavelmente não é seguro, então eu iria com a resposta de Andrew.

printenv USER

Se você precisar recuperá-lo de um aplicativo, como o Node, é mais fácil obtê-lo das variáveis ​​de ambiente, como

process.env.USER.

O que seria legal
fonte
1

Defina 'usuário ativo'.

Se a pergunta for 'quem é o usuário conectado', então 'quem sou eu' ou 'whoami' está bem (embora eles dêem respostas diferentes - 'whoami' informa apenas um nome de usuário; 'quem sou eu' informa no terminal e tempo de login também).

Se a pergunta for 'qual ID de usuário é o ID efetivo para o shell', geralmente é melhor usar 'id'. Isso informa sobre o ID de usuário e ID de grupo reais e efetivos, e também sobre os IDs de grupo suplementares. Isso pode ser importante se o shell estiver executando SUID ou SGID.

Jonathan Leffler
fonte