用 Ruby 正確找到使用者的家目錄

Juanito FatasThinking about what to do.
  • Dir.home

    要是 ENV 裡沒有設定 HOME 就不行了:

    > ENV.delete 'HOME'
    "/Users/Juan"
    > Dir.home
    ArgumentError: couldn't find HOME environment -- expanding `~'
    
  • ENV.fetch('HOME')

    這個也可以,但有機會 ENV 裡沒有 'HOME' 這個鍵。

  • 使用標準庫 Etc

    require 'etc'
    File.expand_path(Dir.home(Etc.getlogin))
    

    這麼寫在 OS X、Unix 環境下最可靠。