2010-12-13 17 views
9

No estoy del todo seguro de cuál usar.¿Cuál es la diferencia entre las variables de entorno `USER` y` USERNAME`?

+0

En realidad, no es específico de Ruby. Estas son variables de entorno que cualquier tipo de script o ejecutable puede ver y usar. –

+0

Me preocupa más la compatibilidad del sistema operativo. ¿'ENV ['USER']' existirá en las instalaciones de Mac? 'Hace ENV [ 'usuario'] == ENV [ 'USUARIO']' instala en Linux? Etc .. – RyanScottLewis

+0

En Linux, ¿tendría 'LOGNAME'? –

Respuesta

9

en Windows: ENV [ 'username'] es la salida del mismo nombre de usuario.

En Linux: si el script se ejecuta a través de sudo, "USUARIO" será el usuario sudoed-to (generalmente root) y "USERNAME" será el usuario que ejecutó sudo.

Asumo Mac sigue el modelo de Linux, pero tendrá que comprobar (estoy en el trabajo y falta un mac para meter) :-)

He aquí una lista de variables de entorno XP: http://vlaurie.com/computers2/Articles/environment.htm

Y aquí está una lista de Vista/7 Medio Ambiente notificación variables..you'll son ligeramente diferentes: http://vlaurie.com/computers2/Articles/environment-variables-windows-vista-7.htm

Editar: El método más seguro sería escribir una pequeña función que determina qué sistema se encuentra en (i Reúnase de su comentario anterior que desea una aplicación Write-Once, Run-Anywhere) d establece los valores apropiados basados ​​en eso.

+0

Tengo un script Bash 'echo $ USERNAME'. Cuando lo ejecuto con 'sudo/name.sh' siempre imprime' root'. Por lo tanto, no estoy seguro acerca de la declaración '' USERNAME '' será el usuario que ejecutó sudo'. ¿Tiene usted una fuente para eso? Por lo que yo puedo decir, '' $ USER' y $ USERNAME' son idénticas, aunque en algunos entornos 'no existe $ USERNAME'. – Nateowami

1

si se trata de Ruby 1.8.6 o 1.9.2, sólo hay ENV['USER'] (en Mac):

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

ver, estoy sobre el Ruby 1.9.2 en Windows 7 y tengo tanto 'ENV [ "USUARIO"]' y 'ENV [ "nombre de usuario"]' – RyanScottLewis

Cuestiones relacionadas