Ruby 能否在 Rake 脚本中改变 shell 环境中的当前路径?

lb563 · 2014年02月12日 · 最后由 lb563 回复于 2014年02月12日 · 2555 次阅读

例如有一 Rake 脚本:

task :cd_dir do 
    cmd = "cd /tmp"
    puts cmd
    system cmd
end

在命令行中执行:rake cd_dir && pwd

以下为输出:

cd /tmp  #想要cd /tmp 目录中去
/lioooo/script # 当前脚本的目录

从以上的输出结果来看:

1: 脚本的原意想把 shell 环境中的当前路径修改成 /tmp

2: 执行脚本后 shell 的当前路径并没有 cd/tmp 仍然是 (pwd) /lioooo/script

想问一下有没有方法使用 Rake 脚本来修改 shell 当前路径?

rake 进程是这个 shell 进程的子进程,子进程没办法直接改变父进程的 PWD。不知道这样是不是符合你的需求:

task :path do   
   path = "/tmp"
   puts path
end

在命令行中执行: cd $(rake path) && pwd

#1 楼 @lululau rake 进程是这个 shell 进程的子进程,子进程没办法直接改变父进程的PWD 之前是我不太清楚的。你提供的方法可以达成我的需求。谢谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号