2013-07-06 53 views
5

什么是在R中获取当前用户的用户名的跨平台方式?我目前使用获取当前用户的名字

system('whoami', intern=TRUE) 

然而,这假设用户有shell访问,并且该whoami程序可用。是否有更原生的在R中获取这些信息?

+1

没有R人们通常在Windows中如何做到这一点?我没有windows机器 – dickoa

回答

7

我这样做:

Sys.getenv("USERNAME") ## works under windows 

或更好更强大的:

Sys.info()[["user"]] 

但在类Unix系统的结果有时是不同的system('whoami', intern=TRUE)

WHOAMI输出用户正在使用的用户名,而 $ USER输出用户名用于登录。

例如,如果用户以约翰身份登录并且su为root,whoami显示root并且回显 $ USER显示John。这是因为su命令默认情况下不会调用 登录shell。

+0

这种方法假定已经设置了“USERNAME”变量。我正在使用Arch Linux,并且在我的设置中这不是默认设置,但设置了“USER”。我认为最后一种方法更强大或'Sys.getenv(“USER”)' – dickoa

+0

@dickoa谢谢。我编辑我的回答 – agstudy

+1

IIRC,你可以使用Sys.info()[[“effective_user”]]获得与whoami相同的输出。 – Hansi