$ SUDO_USER não funciona se você estiver usando sudo su -
.
Também requer várias verificações - se, $USER == 'root'
então, obter $SUDO_USER
.
Em vez do whoami
uso do comando who am i
. Isso executa o who
comando filtrado para a sessão atual. Fornece mais informações do que você precisa. Então, faça isso para obter apenas o usuário:
who am i | awk '{print $1}'
Alternativamente (e mais simples) você pode usar logname
. Ele faz a mesma coisa que a declaração acima.
Isso fornece o nome de usuário que efetuou login na sessão.
Estes funcionam independentemente de sudo
ou sudo su [whatever]
. Ele também funciona independentemente de quantas vezes su
e sudo
são chamados.
who am i
é a resposta aqui.who am i
éwho mom likes
. Sua escolha.who
retorna 2 linhas para mim, ambas contendo meu nome, ewho am i
nenhuma. Qualquer ajuda?who am i
não faz nada, parece ser simpleswho
, entãowho | awk '{print $1}'
funciona como esperado;)awk
instalado, você também pode usarcut
:who mom likes | cut -d' ' -f1
oused
por algum motivo:who mom likes | sed -n 's/^\([^ ]*\).*/\1/p'
Acho que $ SUDO_USER é válido.
fonte
sudo env
mostra,SUDO_USER
massudo echo $SUDO_USER
não imprime nada ...sudo echo $SUDO_USER
, bash está avaliando $ SUDO_USER antes de executar sudo. experimente o script postado nesta solução, ele funciona.echo ${SUDO_USER:-$USER}
para travar asudo
execução de ambos e não sudo. Mas a resposta de evanlogname
parece mais fácil$SUDO_USER
não funcionasudo su -
, maslogname
sempre funciona.Veja como obter o nome de usuário da pessoa que chamou o script, independentemente de ser sudo ou não:
ou uma versão mais curta
fonte
user=${SUDO_USER:-$(whoami)}
ouuser=$(logname)
who am i | awk '{print $1}'
não funcionou para mim, maswho|awk '{print $1}'
servirá ao trabalhofonte
Estranho, o sistema faz distinção entre UIDs reais e efetivos , mas não consigo encontrar nenhum programa que exporte isso no nível do shell.
fonte
Usando
whoami
,who am i
,who
,id
ou$SUDO_USER
não está certo aqui.Na verdade,
who
nunca é uma solução para a questão, já que listará apenas os usuários logados, que podem ser dezenas ...A meu ver, a única resposta valiosa é o uso de
logname
.Espero que isto ajude
Roubar
fonte
Se for o UID que você está procurando (útil para travessuras do docker), isso funciona:
fonte