如何设置程序的工作目录?

时间:2016-12-19 20:45:03

标签: ruby linux

我有一个存在于/ usr / local / flower目录中的程序 - flower.rb。它需要加载也存在于同一目录中的库。我在我的OS环境路径中包含了这个花目录。我选择的操作系统是Ubuntu。

当我从/ usr / local / flower以外的任何其他目录执行flower.rb时,我收到错误消息,指出程序无法加载/ usr / local / flower目录中存在的库b / c它们从源代码加载为./ [library]。

我意识到我可以将Ruby程序改为硬编码/ usr / local / flower / [libraries],但我很好奇是否有办法从我的主目录执行这个程序,例如/ home / seattle,没有这样做。

此外,程序执行时,它通过-o开关创建输出。

我的解决方案是创建一个bash脚本,该脚本更改为/ usr / local / flower目录,执行该程序,然后返回到调用flower.rb程序的PWD目录。问题是-o开关。如果我执行-o [file],[file]将被写入/ usr / local / flower目录,而不是我运行flower.rb程序时的位置。

这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分:3)

您的问题并不十分清楚,但您似乎错误地使用了requirerequire用于从$LOAD_PATH加载脚本。如果要加载相对于当前脚本目录的脚本,请使用require_relative

您应该从不加载相对于当前工作目录的脚本。当前工作目录由用户控制,而不是您的脚本。你不知道它会是什么。有一个原因可以解释为什么当前的工作目录已经从2008年的$LOAD_PATH中移除了:因为它已经坏了。