2010-12-13 46 views
9

Je ne suis pas tout à fait sûr lequel utiliser.Quelle est la différence entre les variables d'environnement `USER` et` USERNAME`?

+0

Ce n'est pas spécifique à Ruby. Ce sont des variables d'environnement que tout type de script ou d'exécutable peut voir et utiliser. –

+0

Je suis plus préoccupé par la compatibilité du système d'exploitation. Est-ce que 'ENV ['USER']' existera sur les installations Mac? Est-ce que 'ENV ['USER'] == ENV ['USERNAME']' sous Linux s'installe? Etc .. – RyanScottLewis

+0

Sous Linux, auriez-vous 'LOGNAME'? –

Répondre

9

Sur les fenêtres: ENV [ 'username'] affichera le nom d'utilisateur. Sur linux: Si le script est exécuté via sudo, "USER" sera l'utilisateur sudo-ed-to (généralement root) et "USERNAME" sera l'utilisateur qui a exécuté sudo.

Je suppose que Mac suit le modèle Linux, mais vous devrez vérifier (je suis au travail et manque un mac percez) :-)

Voici une liste des variables d'environnement XP: http://vlaurie.com/computers2/Articles/environment.htm

Et voici une liste de Vista/7 Environnement variables..you'll avis, ils sont légèrement différentes: http://vlaurie.com/computers2/Articles/environment-variables-windows-vista-7.htm

Edit: L'approche la plus sûre serait d'écrire une petite fonction qui détermine quel système vous êtes sur (i rassembler à partir de votre commentaire ci-dessus vous voulez une application Write-Once, Run-Anywhere) un d définit les valeurs appropriées en fonction de cela.

+0

J'ai un script Bash 'echo $ USERNAME'. Quand je l'exécute avec 'sudo./Name.sh', il imprime toujours' root'. Donc, je ne suis pas sûr de la déclaration '" USERNAME "sera l'utilisateur qui a couru sudo'. Avez-vous une source pour ça? Autant que je sache, '$ USER' et' $ USERNAME' sont identiques, bien que dans certains environnements, $ USERNAME n'existe pas. – Nateowami

1

si elle est Ruby 1.8.6 ou 1.9.2, il n'y a ENV['USER'] (sur Mac):

ruby-1.9.2-p0 > ENV.keys.grep /user/i 
=> ["USER", "__CF_USER_TEXT_ENCODING"] 
+0

Voir, je suis sur Ruby 1.9.2 sur Win 7 et j'ai 'ENV [" USER "]' et 'ENV [" USERNAME "]' – RyanScottLewis