2013-11-09 4 views
0

Unix 시스템 (Linux, OSX, Solaris 포함)에서 특정 사용자에 대한 개인 R 패키지 라이브러리의 절대 경로는 어떻게 찾을 수 있습니까? 현재 사용자의 홈 경로를 얻으려면, 우리는 사용할 수 있습니다Unix 시스템에서 사용자 홈 라이브러리의 절대 경로 찾기

path.expand(Sys.getenv("R_LIBS_USER")) 

그러나, 나는 현재 사용자가 그렇게 할 충분한 권한이 주어진 다른 사용자의 경로를 조회하고 싶습니다. 사용자 디렉토리가 기본값 /home이 아니더라도 작동합니다.

+0

다른 사용자의 환경 변수를 얻는 것은 .profile 또는 .bashrc와 같은 많은 init 파일을 읽는 것을 포함하여 로그인을 시뮬레이션하기 때문에 견고하게 수행하기 어렵습니다. 출력이 캡처되어 파싱 된 프로그램 그 init 파일들. 본질적으로 유닉스 명령'su - user - c 'printenv R_LIBS_USER'를 실행하고'R_LIBS_USER = PPP'와 같은 줄을 보길 원한다. 여기서 PPP는 경로명이다. –

+0

OK. 사용자가 사용자 정의 프로필이나 초기화 스크립트를 가지고 있지 않고 단순히 시스템 전체 기본값을 사용한다고 가정하면 어떻게됩니까? – Jeroen

+1

R 시스템이 기본적으로 사용자 라이브러리를 저장하는 위치를 모르지만 일단 알았 으면'libdir = "/ R/library"; paste (path.expand ("~ otheruser"), libdir, sep = "")' –

답변

0

마크의 제안을 바탕으로, 내가 가지고 올 것 중에 최고입니다

userlib <- function(username){ 
    userlib <- path.expand(sub("~", paste0("~", username), Sys.getenv("R_LIBS_USER"), fixed=TRUE)); 
    if(file.exists(userlib)){ 
    return(userlib) 
    } else { 
    return("") 
    } 
} 

이 내가 적어도 리눅스와 OSX에 필요한 줄 것으로 보인다.