RVM可以做的一件事就是当你更改目录,查找.rvmrc并根据该文件的内容更改当前的Ruby版本和gemset时注意到这一点.只要您更改到该目录并相应地输出消息,它就会进行此更改.
它如何检测当前工作目录中的更改?我可以想象一种非常粗暴的方法:运行一个以当前用户身份运行的守护进程,并不断检查结果pwd.但我确信这不是它的作用.
另一种方法可能是别名cd来更改目录,但.rvmrc如果有指示,还要检查并更改gemsets.
是否存在用于更改目录的Unix系统挂钩,或者是否存在RVM正在使用的其他技巧?
Way*_*uin 26
[RVM]如何检测当前工作目录中的更改?
这完全取决于shell甚至shell版本.如所建议的,实现此目的的最简单方法是cd通过定义同名函数来覆盖.一定要调用内置cd函数,否则会产生非常讨厌或非常有趣的副作用(取决于透视).
cd() {
builtin cd $*
echo "Changed directories from '${OLDPWD}' to '${PWD}'."
}
Run Code Online (Sandbox Code Playgroud)
通过将其放在文本源文件中并获取文件,您可以将此自定义cd功能加载到源文件的会话中.
wayneeseguin$ cd /tmp
Changed directories from '/home/wayneeseguin' to '/tmp'.
Run Code Online (Sandbox Code Playgroud)
如果您希望此功能始终对用户帐户中的交互式shell有效,请将功能定义放入其中~/.bash_profile.或者,您可以从中存储函数的文本文件~/.bash_profile.您可以在Bash手册中阅读有关Bash启动文件的更多信息.
Ruby enVironment Manager(RVM)主要针对Bash shell编写.RVM将在ZSH shell中工作,允许您在cd操作后添加函数调用.到目前为止,这是解决此任务的最佳方法.因此,如果您的shell允许它,请务必使用此方法.RVM呢.
有关广泛的示例,您可以在GitHub上查看RVM的cd功能.
RVM利用此功能加载每个项目(目录,真正).rvmrc文件,并为用户提供配置各种钩子的能力.您可以在文档网站上阅读有关RVM挂钩的更多信息.
| 归档时间: |
|
| 查看次数: |
3665 次 |
| 最近记录: |