當執行IO.popen
或exec
時,Ruby從哪裏拾取默認的PATH變量?Ruby popen和可執行文件路徑?
例如在zsh中:
echo $PATH
/Users/bibstha/.rubies/ruby-2.1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
這證實到ENV['PATH']
在IRB:
irb(main):026:0> ENV['PATH']
=> "/Users/bibstha/.rubies/ruby-2.1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
,但不與popen
:
irb(main):024:0> IO.popen("echo $PATH").read.chomp
=> "/usr/bin:/bin:/usr/sbin:/sbin"
更新:
我已經嘗試過與OSX Yosemite(10.10)發佈的ruby以及使用ruby-install進行自定義安裝。
Homebrew在/ usr/local/bin中安裝了很多應用程序,由於ruby在PATH中沒有這個,所以我的兩個腳本都失敗了。
我正在使用rbenv和IO.popen(「echo $ PATH」)。read.chomp和ENV ['PATH']完全相同,但shell中的echo $ PATH不同。 – archie
如果使用.bashrc或.zshrc更新$ PATH,它是否會被IO.popen(「echo $ PATH」)拾取? – bibstha