web-dev-qa-db-ja.com

Rubyでユーザーのホームディレクトリを取得するクロスプラットフォームの手段

Javaには、プラットフォームに依存しない方法でユーザーの「ホーム」ディレクトリを取得するための便利なSystem.getProperty("user.home")があります。 Rubyで同等のものは何ですか?遊ぶためのWindowsボックスがないので、ファイル名のチルダに頼るのが最もクリーンな方法ではないと感じています。代替手段はありますか?

57
davetron5000

File.expand_path メソッドは、チルダ(~)を特別に処理するUnixの規則を使用するため、~は現在のユーザーのホームディレクトリを参照し、~foofooのホームディレクトリを参照します。

より良いまたはより慣用的な方法があるかどうかはわかりませんが、File.expand_path('~')があなたを導くはずです。

82
Jörg W Mittag

Ruby 1.9以降では、 Dir.home

98
Pioz

ENV["HOME"]またはENV["HOMEPATH"]は、あなたが望むものを与えるべきです。

homes = ["HOME", "HOMEPATH"]

realHome = homes.detect {|h| ENV[h] != nil}

if not realHome
   puts "Could not find home directory"
end
10
Jacob Relkin

これはすべてのオペレーティングシステムで動作します

  • 現在のユーザー向け
Dir.home
  • 特定のユーザー向け
Dir.home('username')

注: Linuxではユーザー名は大文字と小文字が区別されますが、WindowsまたはmacOSでは区別されません

5
KING SABRI