【问题标题】:Is it possible to have too many $PATHs set in OS X?是否可以在 OS X 中设置过多的 $PATH?
【发布时间】:2009-11-18 01:30:23
【问题描述】:

我最近一直在学习 gems,我遇到的一个错误是:

WARNING:  Installing to ~/.gem since /Library/Ruby/Gems/1.8 and
  /usr/bin aren't both writable.
WARNING:  You don't have /Users/Alex/.gem/ruby/1.8/bin in your PATH,
 gem executables will not run.
ERROR:  Error installing rubygame:
 ffi requires rake (>= 0.8.7, runtime)

我了解 UNIX(更具体地说是 bash)使用此 .bash_profile 文件来知道在我运行脚本/命令时在哪里查找可执行文件,并且它“按顺序”执行此操作。

我的问题是:我是否可以在需要时继续添加目录,这样做是否会让我发现……什么?

(对于它的价值,我将命令重新运行为“sudo gem...”,它仍然显示“ERROR: Error installing rubygame: ffi requires rake (>= 0.8.7, runtime) )

【问题讨论】:

    标签: bash macos unix shell rubygems


    【解决方案1】:

    您可以在 PATH 的末尾(或顶部)添加内容,直到达到变量的长度限制。这太棒了。

    但它会减慢命令搜索速度。每次您键入命令时,都会在 PATH 告诉它搜索直到找到的所有地方搜索可执行文件。命令拼写错误可能会导致文件不存在,并且整理起来可能会很慢。

    【讨论】:

    • 实际上它取决于shell(用于命令搜索)。像 zsh 这样的聪明的 shell(每个人都应该使用它:P)保留所有可用命令的哈希表,这就是为什么你需要在安装某些东西后进行“rehash”。
    • 嗯,bash 做散列。 (检查help hash)这是惰性散列,是的。它不会搜索尚未找到的内容。然后,手动重新散列乳牙路径的活动散列,可以证明是一个漫长的操作。
    【解决方案2】:

    我相信 bash 会缓存可执行文件的位置,因此即使您的 PATH 很长,运行程序也不会花费更长的时间。

    对于最后一个错误,您可以尝试 sudo gem update rake...

    【讨论】:

      【解决方案3】:

      我不知道 $PATH var 或任何一个 env var 的长度有任何限制。但我想一般环境变量是有限制的,总共 65KB。还是不确定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 1970-01-01
        • 2014-10-19
        • 2016-10-15
        • 1970-01-01
        相关资源
        最近更新 更多