假设有可执行文件/ path / to / hello。我想这样做
set-search-path "/path/to:/another/path:/usr/bin:/bin"
IO.popen({},[["hello","argv0"],"argv1"])
我知道我们可以指定“hello”的完整路径,但如果可能的话,我更愿意看一个带搜索路径的解决方案。
在调用ruby解释器之前设置路径也不是我想要的。
我想这涉及设置ruby本身的环境,因此可能是setenv(3)c库函数的包装器。
还请指出如果我以另一种方式使用popen,将字符串传递给shell。
我目前正在运行ruby2.1。
答案 0 :(得分:1)
你可以这样做:
paths = "/path/to:/another/path:/usr/bin:/bin"
paths.split(':').each{|path|
if File.exist?(path)
IO.popen(...)
break
end
end
还请指出如果我以另一种方式使用popen,将字符串传递给shell。
popen
方法可以接受环境哈希,例如:
IO.popen({'PATH' => '/path/to:/another/path:/usr/bin:/bin'}, cmd)