2010-12-13 2 views
9

어느 것을 사용할 지 모르겠습니다.`USER`과`USERNAME` 환경 변수의 차이점은 무엇입니까?

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

실제로 루비와 관련이 없습니다. 이것은 모든 유형의 스크립트 또는 실행 파일이보고 사용할 수있는 환경 변수입니다. –

+0

저는 OS 호환성에 더 관심이 있습니다. 'ENV [ 'USER']'는 Mac 설치시 존재합니까? ENV [ 'USER'] == ENV [ 'USERNAME']'이 (가) 리눅스에 설치합니까? 기타 .. – RyanScottLewis

+0

리눅스에서'LOGNAME'을 사용 하시겠습니까? –

답변

9

: ENV [ '이름']를 출력 현재 사용자 이름은 루비 1.8.6 또는 1.9.2의 경우

+0

나는 Bash 스크립트'echo $ USERNAME'를 가지고 있습니다. 'sudo./name.sh'로 실행할 때 항상'root'를 출력합니다. 그래서''USERNAME "이 sudo를 실행 한 사용자가 될 것이라는 진술에 대해서는 확실하지 않습니다. 그 근원이 있습니까? 내가 알 수있는 한'$ USER'와'$ USERNAME'은 동일하지만, 어떤 환경에서는'$ USERNAME'이 존재하지 않습니다. – Nateowami

1

만 (맥) ENV['USER']있다.

Linux에서 : 스크립트가 sudo를 통해 실행되는 경우 "USER"는 sudo-ed-to 사용자 (일반적으로 root)가되며 "USERNAME"은 sudo를 실행 한 사용자가됩니다. http://vlaurie.com/computers2/Articles/environment.htm

:

내가 맥 리눅스 모델을 다음과 가정,하지만 당신은 여기

:-) (내가 작업에있어 및 찌를 수있는 맥 부족)을 확인해야합니다는 XP 환경 변수의 목록입니다 http://vlaurie.com/computers2/Articles/environment-variables-windows-vista-7.htm

편집 : 이 가장 안전한 방법은 당신이 어떤 시스템이 결정하는 작은 함수를 작성하는 것입니다 (내가

그리고 여기은 약간 다릅니다 비스타/7 환경 variables..you'll 통지의 목록입니다 위에서 작성한 Write-Once, Run-Anywhere 앱을 원한다면 위에서 d는 그에 따라 적절한 값을 설정합니다.

+0

Win 7에서 Ruby 1.9.2를 사용하고 있고 ENV [ "USER"]와 [ENV [ "USERNAME"] '를 모두 가지고 있습니다. – RyanScottLewis