2015-03-31 49 views
1

假設有可執行文件/ path/to/hello。我想這樣做爲exec spawn和popen設置搜索路徑在ruby中

set-search-path "/path/to:/another/path:/usr/bin:/bin" 
IO.popen({},[["hello","argv0"],"argv1"]) 

我知道我們可以指定「你好」的完整路徑,但更願意看到如果可能的搜索路徑的解決方案。

在調用ruby解釋器之前設置路徑並不是我正在尋找的。我猜這涉及設置紅寶石本身的環境,因此可能是圍繞setenv(3)c庫函數可以做的一個包裝。

另請指出,如果我使用popen另一種方式,將字符串傳遞給shell。

我目前正在運行ruby2.1。

回答

1

你可以這樣說:

paths = "/path/to:/another/path:/usr/bin:/bin" 
paths.split(':').each{|path| 
    if File.exist?(path) 
    IO.popen(...) 
    break 
    end 
end 

請還指出,如果我用POPEN其他方式,傳遞一個字符串到外殼。

popen方法可以接受的環境散列,如:

IO.popen({'PATH' => '/path/to:/another/path:/usr/bin:/bin'}, cmd) 
+0

謝謝,我看了你的帖子,並將其真正回答這個問題。不過,我仍然期待替代解決方案,對不起來不高興。 – soubunmei 2015-04-23 01:52:23