【问题标题】:custom env vars with rvmsudo使用 rvmsudo 自定义环境变量
【发布时间】:2011-04-24 17:12:51
【问题描述】:

我正在尝试运行一个 ruby​​ 脚本,它的某些任务需要 root 访问权限。我知道 rvmsudo 存在并且我使用它,但是如果我想设置一个环境变量,例如 TEST_ENV=1,它就不起作用。

例子:

rvmsudo ruby some_script_which_requires_root_access.rb

当我调试脚本并检查 ENV 哈希时,我看不到 TEST_ENV=1 变量。我尝试通过以下方式导出 var:

export TEST_ENV=1 

并将其放入.rvmrc.bash_profile.bashrc 中,用于current_user,以及.profile.bashrc 的root 用户,但不起作用。

所以我的问题是,我应该在哪里定义或导出这个TEST_ENV=1,以便当我使用rvmsudo 运行脚本时,它是ENV ruby​​ 哈希的一部分?

【问题讨论】:

    标签: ruby bash rvm


    【解决方案1】:

    你可以试试:

    sudo -E ruby some_script_which_requires_root_access.rb
    

    它可以保护您的整个环境。所以它应该按预期工作。

    【讨论】:

    • 请注意,-E 选项文档说“仅当匹配的命令具有 SETENV 标记或在 sudoers(5) 中设置了 setenv 选项时才可用。”
    • 如果您在 /etc/sudoers 中设置环境,则可以使用。
    • AFAIK 默认在 macOS 上,可能不在 linux 下。
    【解决方案2】:

    您是否尝试过简单地编辑 rvmsudo 脚本并将 envvar 定义放入其中?

    【讨论】:

    • 是的,我做到了,我破解了它,这就是我让它工作的方式。但它很难看,我努力在我的代码和所有设置中提供优雅。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    相关资源
    最近更新 更多