Além disso, essas variáveis sempre correspondem ao nome de usuário atualmente conectado (no meu sistema Debian)? Posso assumir a disponibilidade deles em outros sistemas Unix (como)?
Também estou curioso por que alguém usaria, em whoami
vez de apenas ler qualquer uma dessas variáveis.
USER
e USERNAME
são variáveis de ambiente comuns, o que significa que, se desejar, você pode configurá-las para valores arbitrários. Apenas digite USER=xyz
. Em outras palavras, mesmo se essas variáveis existirem, não há garantia de que seus valores correspondam ao nome de usuário atualmente conectado.
guarantee
, eu quis dizer por padrão (ou seja, assumindo que o usuário não os alterou).
sudo whoami
esudo echo $USER
sudo echo $USER
, o shell se expande $USER
e depois chama sudo
. Então é claro que não produz a mesma saída que whoami
. Como sudo whoami
, sudo sh -c 'echo $USER'
normalmente produz root
. Em relação ao seu comentário sobre o whoami
uso do EUID , observe que ele sudo whoami
sairia root
mesmo se whoami
usado o UID. sudo
conjuntos tanto EUID e UID para o comando é executado (exceto na situação muito incomum que você configurá-lo explicitamente para se comportar de outra forma). Compare sudo id -u
com sudo id -ru
.
man
página,whoami
relata o nome associado ao seu ID de usuário efetivo. O que significa que ele retornará algo diferente se você estiver usandosudo
ou executando um executável setuid. Se vocêsudo
configurou, tentesudo whoami
por exemplo.