Nie jestem do końca pewien, którego użyć.Jaka jest różnica między zmiennymi środowiskowymi "USER" i "USERNAME"?
Odpowiedz
na oknach: ENV [ 'username'] wyświetli bieżący nazwa_użytkownika.
W systemie Linux: Jeśli skrypt jest uruchamiany przez sudo, "USER" będzie użytkownikiem sudo-ed-to (zwykle root), a "USERNAME" będzie użytkownikiem, który uruchomił sudo.
Zakładam Mac następujący model Linux, ale musisz sprawdzić (jestem w pracy i brak mac kłuć) :-)
Lista zmiennych XP Środowisko: http://vlaurie.com/computers2/Articles/environment.htm
a oto lista Vista/7 Środowiska powiadomienia variables..you'll są nieco inaczej: http://vlaurie.com/computers2/Articles/environment-variables-windows-vista-7.htm
Edit: najbezpieczniejszym rozwiązaniem byłoby napisać mały funkcję, która określa, jaki system jesteś na (i zbieraj z Twojego komentarza powyżej, gdy chcesz mieć aplikację Write-Once, Run-Anywhere) d na podstawie tego ustala odpowiednie wartości.
Mam skrypt Bash 'echo $ USERNAME'. Kiedy uruchomię go za pomocą 'sudo./Name.sh', zawsze wypisze' root'. Więc nie jestem pewien co do stwierdzenia "USERNAME" będzie użytkownikiem, który uruchomił sudo'. Czy masz na to źródło? O ile mogę powiedzieć, "$ USER' i" $ USERNAME "są identyczne, chociaż w niektórych środowiskach' $ USERNAME' nie istnieje. – Nateowami
jeśli jest Ruby 1.8.6 lub 1.9.2, jest tylko ENV['USER']
(na Macu):
ruby-1.9.2-p0 > ENV.keys.grep /user/i
=> ["USER", "__CF_USER_TEXT_ENCODING"]
Zobacz, jestem na Ruby 1.9.2 na Win 7 i mam zarówno 'ENV [" USER "]' oraz 'ENV [" USERNAME "]' – RyanScottLewis
To w rzeczywistości nie jest specyficzne dla Ruby. Są to zmienne środowiskowe, które każdy typ skryptu lub pliku wykonywalnego może zobaczyć i wykorzystać. –
Jestem bardziej zaniepokojony kompatybilnością z OS. Czy w instalacjach na komputerach Mac istnieje 'ENV ['USER']'? Czy 'ENV ['USER'] == ENV ['USERNAME']' w systemie Linux jest instalowany? Itp .. – RyanScottLewis
W systemie Linux, czy masz "LOGNAME"? –