Como obtenho o nome do usuário ativo por meio da linha de comando no OS X?
Como obtenho o nome do usuário ativo por meio da linha de comando no OS X?
Respostas:
como 'whoami' ficou obsoleto, é provavelmente mais compatível com o futuro:
id -un
whoami
do Leopard confirma que foi substituído por id
.
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.
Por aqui
Verificar o proprietário de / dev / console parece funcionar bem.
stat -f "%Su" /dev/console
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 whoami
utilitário tornou-se obsoleto e é equivalente a id -un
. Ele lhe dará o usuário atual
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.
Você também pode usar o logname
comando 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 sudo
operaçã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
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/console
retornos 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
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
.
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.