Вдохновленный Получение исходной директории Bash script из, какой способ Ruby сделать это?
Может ли Ruby script указать, в каком каталоге он находится?
Ответ 1
File.dirname(__FILE__)
предоставит вам путь по отношению к запущенному script.
File.expand_path(File.dirname(__FILE__))
даст вам абсолютный путь.
Ответ 2
Использовать __dir__
Как и в Ruby 2.0, __dir__
- это самый простой способ получить это. Это
Возвращает канонизированный абсолютный путь в каталоге файла из которого вызывается этот метод.
См. документацию __dir__
и Почему __FILE__ в верхнем регистре и __dir__ в нижнем регистре?".
Ответ 3
использовать __dir__
File.dirname(__FILE__)
не является правильным способом получить каталог, в котором хранится script.
При запуске рабочий каталог и каталог с файлом script тот же, но он может измениться.
Например:
Dir.chdir('..') do
puts __dir__
puts File.expand_path(File.dirname(__FILE__))
end
для script файла, хранящегося в /Desktop/tmp
, запускающем его, выдаст вывод
/home/mateusz/Desktop/tmp
/home/mateusz/Desktop
Ответ 4
ENV [ "PWD" ] кажется самым простым способом для меня в Linux. Я не знаю об OS-агностическом пути.