gpt4 book ai didi

bash - RubyGems 如何修改 $PATH

转载 作者:行者123 更新时间:2023-12-04 05:42:07 24 4
gpt4 key购买 nike

当您使用 bin 目录安装 gem 时,它会自动添加到 zsh 和 bash 中的 $PATH 中。 rubygems 如何在不修改 bashrc、bash_profile 或任何其他 pre-shell 脚本的情况下解决这个问题?

最佳答案

When you install a gem with a bin directory it is automatically added to $PATH in zsh and bash.



这个问题看起来好像 $PATH 是在安装 gem 时被操纵的。它不是。相反,gem 安装在 $PATH 的某个位置,这很常见。我相信(未经测试),当您安装 rubyrubygems 时, gem environment 变量 EXECUTABLE DIRECTORY 值(我的默认值是 /usr/bin )被添加到 $PATH ,如果它不存在的话。但是,由于 /usr/bin 应该在 $PATH 上,这是未经检验的猜想,我找不到支持该理论的文档。

在我对 rake (我能想到的第一个分发可执行文件的 gem)的测试中,我的 /usr/bin/rakeversion 0.8.7 变为 version 0.9.2.2 。我的 $PATH 没有被 sudo gem install rake 命令触及。

这是有道理的,因为 RubyGems 是一个版本化系统。它会自动处理 gem 版本,将最新版本的符号链接(symbolic link)(或类似的 - 它可能是复制和覆盖)到您的 $PATH 中,而无需修改 $PATH 本身。我会假设 /usr/bin/ 是一个常见的 $PATH 位置。

我不确定 OP 在哪个平台上工作。以下内容至少与 OS X 有关。
gem environment:

...SNIP...

- EXECUTABLE DIRECTORY: /usr/bin

...SNIP...

- GEM PATHS:
- /Library/Ruby/Gems/1.8
- /Users/simont/.gem/ruby/1.8
- /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

因此, EXECUTABLE DIRECTORY 是我们将捆绑在 gems 中的 /bin 中的可执行文件放置的位置,而 GEM PATHS 是我们放置 gem 本身的位置。我相当确定,如果您查看 GEM PATHS ,您可以找到同一个 gem 的多个版本,包括它们的 /bin 目录,但只有链接到 EXECUTABLE DIRECTORY 的最新可执行文件。

以问题中提到的方式“手动”编辑 $PATH 将取决于平台并且有些难以实现(例如, bashzshtsch 启动文件,以及 WindowsOS XLinux$OTHER_OS 对比环境变量很大),而且(以我的拙见)也会有点“粗鲁”。

关于bash - RubyGems 如何修改 $PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166228/

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