gpt4 book ai didi

rvm - RVM 如何检测您何时更改了目录?

转载 作者:行者123 更新时间:2023-12-03 10:59:37 30 4
gpt4 key购买 nike

RVM 可以做的一件事是在您更改目录时注意,查找 .rvmrc ,并根据该文件的内容更改您当前的 Ruby 版本和 gemset。只要您更改到该目录,它就会进行此更改并相应地输出一条消息。

它如何检测当前工作目录的变化? 我可以想象一种非常粗暴的方法:运行一个以当前用户身份运行的守护进程,并不断检查 pwd 的结果。 .但我确信这不是它的作用。

另一种方法可能是别名 cd更改目录但还要检查 .rvmrc并根据指示更换 gem 组。

是否有用于更改目录的 Unix 系统 Hook ,或者 RVM 是否使用了其他一些技巧?

最佳答案

How does [RVM] detect a change in the current working directory?



这完全取决于外壳甚至外壳版本。正如建议的那样,完成此操作的最简单方法是覆盖 cd通过定义一个同名的函数。请务必调用内置 cd函数,否则您将导致非常讨厌或非常有趣的副作用(取决于视角)。
cd() {
builtin cd $*
echo "Changed directories from '${OLDPWD}' to '${PWD}'."
}

通过将它放在文本源文件中并获取文件,您可以加载此自定义 cd功能到获取文件的 session 中。
wayneeseguin$ cd /tmp
Changed directories from '/home/wayneeseguin' to '/tmp'.

如果您希望这对您的用户帐户中的交互式 shell 始终有效,请将函数定义放入 ~/.bash_profile。 .或者,您可以从 ~/.bash_profile 获取存储函数的文本文件。 .您可以 read more about Bash startup files在 Bash 手册中。

The Ruby enVironment Manager (RVM)主要针对 Bash shell . RVM 将在 ZSH shell 中工作它允许您在 cd 之后添加函数调用行动。这是迄今为止解决此任务的最佳方法。因此,如果您的 shell 允许,请务必使用此方法。 RVM 可以。

对于一个广泛的例子,你可以 look at RVM's cd functionality on GitHub .

RVM 利用此功能加载 per-project (directory, really) .rvmrc files以及为用户提供配置各种钩子(Hook)的能力。您可以阅读有关 RVM's hooks on the documentation website 的更多信息.

关于rvm - RVM 如何检测您何时更改了目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605277/

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