> pwd
/tmp
> ruby cdscript.rb
> pwd
/usr/bin
这是我目前拥有的代码:
exec('cd /usr/bin')
很遗憾,cd是一个内置命令。所以:
`exec': No such file or directory - cd (Errno:ENOENT)
有没有什么解决办法?
无法直接在ruby中实现,所以我改变了方向。我修改了脚本以输出目标目录路径,并在.bashrc中定义了一个函数,该函数将参数通过脚本传递,然后cd到正确的目录。虽然不是我希望的自包含形式,但它完成了工作。
感谢大家的回复。
cd /usr/bin
或者system('cd /usr/bin')
,但这只会改变新 shell 的当前目录(它是 Ruby 的子进程,而 Ruby 又是 shell 的子进程),但这是无意义的,因为我认为你不能在 *inx 系统中更改父进程的目录。 - jcubic