Когда файл загружается/требуется через символическую ссылку, все методы, ключевые слова и т. Д., Которые относятся к имени файла, похоже, относятся к имени ссылки, а не к реальное имя файла. Например, предположим, что у меня есть файл foo.rb
с его содержанием что-то вроде:Доступ к реальному имени файла символьного связанного файла
puts __FILE__, __dir__, caller
и символическую ссылку, указывающую на bar.rb
foo.rb
. Если я загружаю/требую foo.rb
через символическую ссылку bar.rb
, то все имена файлов, указанные вышеприведенными командами, описывают символическое имя ссылки bar.rb
, а не действительное имя файла foo.rb
.
Есть ли способ, чтобы вызвать аналоги __FILE__
, __dir__
, caller
и т.д. с именами файлов, указывающих на реальный файл, а не символические имена ссылок?
Как вы определяете "реальный", я вас спрашиваю? Ваше «реальное» имя файла - это всего лишь запись в метаданных FS, указывающая на определенное местоположение на диске. Так символическая ссылка. Те же самые данные могут быть решены многими именами. Как вы выбираете один «настоящий»? –
@SergioTulentsev Может быть, мое использование слова «реальный», возможно, не было подходящим, но вы, кажется, знаете, что я имею в виду. И есть определенная разница между символическими ссылками и тем, что я называю реальными файлами. – sawa
Мои ограниченные знания ОС и файловых систем говорят, что это невозможно. Имя файла - имя файла. Конечно, я ошибаюсь. –