2011-04-24 53 views
2

我想運行一個ruby腳本,它需要某些任務的根訪問權限。我知道rvmsudo存在,我使用它,但如果我想設置一個env var,例如TEST_ENV=1,它不起作用。rvmsudo自定義env vars

例子:

rvmsudo ruby some_script_which_requires_root_access.rb 

當我調試腳本,檢查ENV散,我沒有看到TEST_ENV=1變種。我試圖通過出口了var:

export TEST_ENV=1 

,並把這個.rvmrc,在.bash_profile.bashrccurrent_user,並在.profile和root用戶的.bashrc,但不起作用。

所以我的問題是,我應該在哪裏定義或導出這個TEST_ENV=1,以便當我運行腳本rvmsudo它是ENV紅寶石散列的一部分?

回答

3

,你可以嘗試用:

sudo -E ruby some_script_which_requires_root_access.rb 

它保留了整個環境。所以它應該按預期工作。

+0

請注意,-E選項文檔中提到「僅當 匹配命令具有SETENV標記或在sudoers(5)中設置了setenv選項時纔可用」。 – 2011-04-24 17:43:27

+0

如果你在/ etc/sudoers裏面使用setenv的話。 – 2011-04-26 18:00:33

+0

AFAIK默認在macos上,可能不在linux下。 – ALoR 2011-04-26 18:40:17

0

您是否嘗試簡單地編輯rvmsudo腳本並將envvar定義放在那裏?

+5

是的,我做了,我砍了,這就是我做它的方式。但它很醜,我努力在我的代碼和所有設置中提供優雅。 – 2011-04-24 17:59:00