gpt4 book ai didi

ruby - 如何(终端)从 ruby​​ 脚本进入文件夹

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:32 25 4
gpt4 key购买 nike

我想知道是否可以从我执行 ruby​​ 脚本的位置更改当前终端目录。

例如,如果我在终端中从 $HOME 执行脚本,我想在脚本末尾进入 $HOME/mydir .

我已经尝试了几件事,但我总是在启动脚本的同一目录中找到。

我尝试过的事情:

Dir.chdir( mydir )
%[cd mydir]

它们实际上会改变目录,但只是在脚本执行的线程中。当脚本结束时,我在终端中的当前位置与启动脚本之前的位置相同。

我在 SO 中发现了类似的东西,但它是 Python-related react 似乎是否定的。


你可能会问为什么?

我目前正在参与一个命令行应用程序(使用 gli),作为起点,它需要一个项目文件夹。所以我的第一个命令是这样的:

$ myfoo new project

这会在当前目录中创建一个名为 project 的新文件夹。现在,为了能够使用其他命令,我需要:

$ cd project
project$ myfoo domore

所以我只是想在执行完myfoo new project后在project中找到我自己会很好。


正如我所担心的,这并不容易(根本不可能)。那么如何使用一个 bash 脚本来执行我想要的 ruby​​ 调用,而不是 RubyGems 生成的标准文件呢?那可行吗?我傻吗?我应该使用 eval 吗?


感谢您的回答。但恐怕没有人能接受。可能问题不是 :)。

最佳答案

据我所知,这是不可能的,因为它们是不同的过程。如果您需要影响 Ruby 脚本的父进程 (Bash),Bash 将需要获取一些东西。所以你可以让你的 Ruby 脚本输出一些 bash 命令,然后有一个 Bash 包装器,它是 Ruby 的输出源。

以 Bash 为例:

`ruby -e 'puts "cd /tmp"'` | source /dev/stdin

But this will only work in Bash 4.0.

编辑:

实际上,您可以在 Bash 3 中使用 eval 而不是 source 来做到这一点:

eval $(ruby -e'puts "cd /tmp"')

关于ruby - 如何(终端)从 ruby​​ 脚本进入文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com