2010-12-13 2 views
9

Я не совсем уверен, какой из них использовать.В чем разница между переменными среды USER и USERNAME?

+0

На самом деле это не Ruby. Это переменные среды, которые могут видеть и использовать любой тип скрипта или исполняемого файла. –

+0

Я больше беспокоюсь о совместимости с ОС. Будет ли 'ENV ['USER']' существует на Mac установлена? Использует ли ENV ['USER'] == ENV ['USERNAME'] 'в Linux? Etc .. – RyanScottLewis

+0

В Linux у вас есть 'LOGNAME'? –

ответ

9

На окнах: ENV [ 'имя пользователя'] будет выводить текущее имя пользователя.

On linux: Если скрипт запускается через sudo, пользователь может использовать sudo-ed-to-user (обычно root), а пользователь «USERNAME» будет пользователем, который запускал sudo.

Я предполагаю, что Mac соответствует модели Linux, но вы должны проверить (я на работе и не хватает макинтош совать) :-)

Вот список переменных среды XP: http://vlaurie.com/computers2/Articles/environment.htm

А вот список Vista/7 окружающей среды variables..you'll уведомления они немного отличаются: http://vlaurie.com/computers2/Articles/environment-variables-windows-vista-7.htm

Edit: Самый безопасный подход должен был бы написать небольшую функцию, которая определяет, какую систему вы на (я собирайте из своего комментария выше, вам нужно приложение Write-Once, Run-Anywhere) d устанавливает соответствующие значения на основе этого.

+0

У меня есть сценарий Bash 'echo $ USERNAME'. Когда я запускаю его с помощью 'sudo./Name.sh', он всегда печатает' root'. Поэтому я не уверен в заявлении '' USERNAME "будет пользователем, который побежал sudo'. У вас есть источник для этого? Насколько я могу судить, '$ USER' и' USERNAME' идентичны, хотя в некоторых средах '$ USERNAME' не существует. – Nateowami

1

если это Руби 1.8.6 или 1.9.2, есть только ENV['USER'] (на Mac):

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

Смотрите, я на Ruby 1.9.2 на Win 7, и у меня есть оба 'ENV [" USER "]' и 'ENV [" USERNAME "]' – RyanScottLewis

Смежные вопросы