title: How do RVM and rbenv actually work?
body: <p>I am interested in how RVM and rbenv actually work.</p>
  
  <p>Obviously they swap between different versions of Ruby and gemsets, but how is this achieved? I had assumed they were simply updating symlinks, but having delved into the code (and I must admit my knowledge of Bash is superficial) they appear to be doing more than this.</p>