在Ruby脚本中更改User的目录

时间:2013-07-07 22:54:13

标签: ruby ruby-2.0

我对Dir.chdir(“/ xyz”)

非常熟悉

不幸的是,这会更改进程的目录,但实际上不会更改用户的目录。我将通过以下示例来说明我的需求。

$~/: ruby my_script.rb
CHANGING TO PATH FOR USER NOT SCRIPT

$/Projects/Important/Path: pwd
$/Projects/Important/Path

请参阅?我需要脚本来更改用户的路径。执行系统/反引号/ Dir.chdir都会调整进程路径,最后是用户坐在他们开始的地方,而不是我想要的路径。

从我所读到的exec开始,是因为它接管现有流程......但无济于事。

2 个答案:

答案 0 :(得分:0)

你不能,但你可以做一些可能足够好的事情。你可以从ruby中调用另一个shell:

Dir.chdir("/xyz")
system("bash")

运行此操作将创建一个 new bash进程,该进程将从/xyz目录开始。缺点是更改此过程将使您回到ruby脚本,并假设它立即结束 - 返回到启动ruby脚本的bash进程。

答案 1 :(得分:0)

可能有效的另一个方法是使用the prompt作为在每个命令后调用的hackish hook。在ruby脚本中,您可以在某处编写新目录的路径,可以从bash和ruby中读取(例如文件 - 但不是环境变量!)。在PROMPT_COMMAND函数中,您检查该文件,并cd检查那里写的内容。只需确保删除该文件,这样在您运行的每个命令后都不会自动cd