2013-07-06 36 views
5

Rの現在のユーザーのユーザー名を取得するクロスプラットフォームの方法は何ですか?私は現在、しかし、これは、ユーザがシェルアクセスを持っていることを前提とし、かつwhoamiプログラムが利用可能であることを現在のユーザーの名前を取得

system('whoami', intern=TRUE) 

を使用しています。 Rにこの情報を得るためのネイティブがありますか?

+1

Rなし通常どのように人々は窓でそれをするのですか?私はWindowsマシンを持っていません – dickoa

答えて

7

私はこれを行うだろう:

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

以上をより堅牢:

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

しかし、Unixライクなシステムの下での結果はsystem('whoami', intern=TRUE)の異なる場合がある:

whoamiを出力ユーザが作業しているユーザ名。 $ USERはユーザ名を出力しますそれはログインに使用されました。

例えば、ユーザーがJohnとしてログインし、suがrootにログインした場合、whoamiはルートとエコーを表示します。 $ USERはJohnを表示します。これは、suコマンドがデフォルトで ログインシェルを呼び出さないためです。

+0

このアプローチは、 "USERNAME"変数がすでに設定されていると想定していました。私はアーチLinuxを使用しており、これは私の設定ではデフォルトでは設定されていませんが、 "USER"が設定されています。私は最後のアプローチがより堅牢であると思う "Sys.getenv(" USER ")' – dickoa

+0

@dickoaありがとう。私の回答 – agstudy

+1

IIRCを編集すると、Sys.info()[["effective_user"]]を使用してwhoamiと同じ出力を得ることができます。 – Hansi

関連する問題