Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 访问与脚本位于同一目录中的文件_Ruby_Relative Path_Cwd - Fatal编程技术网

Ruby 访问与脚本位于同一目录中的文件

Ruby 访问与脚本位于同一目录中的文件,ruby,relative-path,cwd,Ruby,Relative Path,Cwd,我需要访问与Ruby脚本位置相关的文件 我找到的唯一解决方案是使用File.dirname(\uuuuu File\uuuu),但是,如果脚本是从符号链接运行的,\uuuuuu File\uuuu会给出符号链接的位置 我更喜欢一个解决方案,它不需要查看\uuuuu文件,检查它是否是链接,如果是,找出它指向的位置。但是,如果没有其他方法,最好知道是否已经有gem可以执行此操作?您可以始终使用popen执行类似ls-l$(pwd)的shell命令,并解析它以遵循符号链接。对于windows,您只需执

我需要访问与Ruby脚本位置相关的文件

我找到的唯一解决方案是使用
File.dirname(\uuuuu File\uuuu)
,但是,如果脚本是从符号链接运行的,
\uuuuuu File\uuuu
会给出符号链接的位置


我更喜欢一个解决方案,它不需要查看
\uuuuu文件
,检查它是否是链接,如果是,找出它指向的位置。但是,如果没有其他方法,最好知道是否已经有gem可以执行此操作?

您可以始终使用popen执行类似ls-l$(pwd)的shell命令,并解析它以遵循符号链接。对于windows,您只需执行等效的windows os命令(我假设它存在!)

是否执行
文件。是否展开\u path
帮助


(没有“尼克斯盒”可以试用)

我更喜欢以下变体:
文件。展开路径(“../other\u File\u in\u same\u dir',\uu文件)


第二个参数是相对路径展开的起点。这默认为当前工作目录。

您如何在windows上获得“符号链接”?您不能,但我需要脚本在windows和*nix上正常工作。(Windows确实有一种专有的文件格式,在Windows上的作用类似于符号链接,它们是.lnk文件)a.lnk只是一个文件,而不是一个文件系统功能,它的用途有些不同。您可以在Windows中获得符号链接和硬链接。我有时在移动文件夹时使用它们,而旧的应用程序需要旧的路径。你可以在这里找到更多信息:不在我的操作系统上工作,也不在OSX上工作。也许有一个选项需要为它设置才能做到这一点?我正在使用
File.dirname(File.expand\u path(\uu\u File\uu))
我正在使用File.expand\u path(“.”)作为符号链接的目录。我在max osx 10.6上运行ruby 1.9,我使用ruby 1.8,但安装了1.9,仍然无法工作。我将只编写一个函数来测试它是否是符号链接,如果是,则执行该操作。@Jeffrey Aylesworth:尝试反转这些操作:
File.expand\u path(File.dirname(\uu File\uu))