【问题标题】:How to change /usr/bin/env?如何更改 /usr/bin/env?
【发布时间】:2009-06-30 15:21:01
【问题描述】:

我有使用 #!/usr/bin/env ruby 的脚本,但我已切换到使用 Ruby 企业版,而不是 Ubuntu 服务器中包含的默认 ruby​​。因此,当我尝试运行它们时,这些脚本会崩溃。如何将 Ruby EE 路径添加到/usr/bin/env

【问题讨论】:

    标签: ruby


    【解决方案1】:

    #!/usr/bin/env ruby 类似于简单地从命令行调用ruby,因此适用相同的规则。基本上,$PATH 环境变量中的各个条目按顺序检查,并使用最先找到的ruby。因此,请确保 Ruby EE 的 ruby 在搜索路径顺序中早于其他 rubys。

    我不熟悉 Ruby EE,所以如果它没有名为 ruby 的可执行文件,只需在搜索路径中位于 Ruby EE 可执行文件的早期目录中创建一个符号链接。

    【讨论】:

    • 你能解释一下怎么做吗?
    【解决方案2】:

    由于您对 Ruby EE 有显式依赖,因此您始终可以修改脚本而不是您的环境(这可能会产生其他意想不到的后果)。

    #!/usr/bin/env 红宝石

    变成

    #!/path/to/enterprise/edition/ruby

    现在读者可以清楚地看到,您使用的是特定版本的 ruby​​,而不仅仅是路径中的任何 ruby​​。

    【讨论】:

    • 这很好,只要你愿意完全放弃脚本的可移植性。在某些情况下,这可能没什么大不了的。
    【解决方案3】:

    我遇到了一个类似的问题,即 cron 作业停止工作...... Cron 似乎默认运行命令,而不使用您期望用户的 PATH 设置(以该用户身份登录时)。事实上,它似乎甚至没有使用任何默认的 PATH 设置(无论是在 /etc/profile 还是其他地方)。

    我能够使用以下命令找到问题(第一个是 cron 似乎如何运行命令):

    su -c 'printenv PATH' userX

    带输出:/usr/local/bin:/usr/bin:/bin:/usr/games

    su -l userX -c 'printenv PATH'

    带输出:/opt/ruby-enterprise-1.8.7-2010.02/bin/:/opt/ruby-enterprise-1.8.7-2010.02/bin/:/usr/local/bin:/usr/bin: /bin:/usr/游戏

    第一个命令似乎没有以任何方式填充 PATH 变量,除了裸系统默认值。 在我的情况下,我通过将必要的(REE)路径添加到:/etc/login.defs 来解决它,默认情况下如下所示:

    /etc/login.defs:103:ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games

    【讨论】:

      【解决方案4】:

      请参阅 Ruby EE 文档页面中的第 1.6 节: http://www.rubyenterpriseedition.com/documentation.html

      对于系统范围的更改,您可以更新 /etc/environment 文件中的 PATH 以包含 Ruby EE bin 目录。也许是这样的:

      PATH="/opt/ruby-enterprise-x.x.x/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/游戏”

      如果您只想让系统上的一个用户看到更改,您可以使用正确的路径更新您的 .bashrc 或 .profile。

      确保在目录列表中首先包含 REE 路径。

      【讨论】:

        【解决方案5】:

        我在这里发布了我在 Ubuntu 上使用的解决方案: http://groups.google.com/group/emm-ruby/browse_thread/thread/d0c685bbd096823a#msg_effa7d6ad42c541c

        除了 Ruby 企业版文档中描述的内容之外,还有一些额外的步骤使其工作。

        【讨论】:

          猜你喜欢
          • 2011-12-04
          • 1970-01-01
          • 2012-10-07
          • 2016-03-23
          • 2013-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多