【发布时间】:2011-09-02 03:50:40
【问题描述】:
我想知道是否可以更改我正在执行我的 ruby 脚本的当前终端目录。
例如,如果我在终端中从 $HOME 执行脚本,我想在脚本末尾 cd in $HOME/mydir。
我已经尝试了几件事,但我总是在启动脚本的同一个目录中找到。
我尝试过的事情:
Dir.chdir( mydir )
%[cd mydir]
他们实际上确实改变了目录,但只是在脚本执行的线程中。当脚本结束时,我在终端中的当前位置仍然与启动脚本之前相同。
我在 SO 中发现了类似的东西,但它是 Python-related 并且响应似乎是否定的。
你可能会问为什么?
我目前正在参与一个命令行应用程序(使用gli),作为起点,它需要一个项目文件夹。所以我的第一个命令看起来像:
$ myfoo new project
这会在当前目录中创建一个名为 project 的新文件夹。现在能够使用我需要的其他命令:
$ cd project
project$ myfoo domore
所以我只是认为在执行myfoo new project 之后在project 中找到自己会很好。
正如我所担心的那样,这并不容易(根本不可能)。那么使用 bash 脚本来执行我想要的 ruby 调用来代替 RubyGems 生成的标准文件呢?这可行吗?我傻吗?我应该使用eval吗?
感谢您的回答。但恐怕没有人可以接受。可能问题不是:)。
【问题讨论】:
-
您似乎不太可能做到这一点。来自 ruby 的任何系统调用都在与您的脚本/shell 不同的线程中运行,并且对当前位置没有影响。你希望用它做什么?
-
@Douglas-F-Shearer:我在答案中稍微扩展了我的理由
-
只是出于好奇,为什么我的答案不起作用?我已经使用过这种技术几次,但我不清楚它为什么不适合您的情况。
-
@Ian:您的回答有效,但不适用于我的情况。我有五个命令(将来可能会更多),我想继续使用
rubygem。我应该在命令执行级别整合东西(参见new命令here)
标签: ruby