- やりたかったこと
ホームディレクトリにディレクトリ「foo」をつくる。
- やった結果
require 'fileutils'
FileUtils.mkdir_p "~/foo"
カレントディレクトリに、「~/foo」という階層のディレクトリができた。
- 正解
require 'fileutils'
FileUtils.mkdir_p File.expand_path("~/foo")
- わかったこと
"~" の展開があくまでシェルの機能であることを念頭に置かずにやってみたら、変なことになったというおバカな例でした。
正しく展開されないにしろ、何かしらのエラーになると予想していたところに "~" そのままのフォルダが作成された、というのも意外でした。
しかしこれもよくよく考えれば、シェルでも正しくエスケープすれば、「~*&!?"'<>(){}」 みたいなフォルダだって作れてしまうし、記号だからと言って特別扱いされる、という単純な話ではないということですね。