Changing Node.js' REPL return value from underscore _ to something else?

Related question: Using the Underscore module with Node.js

Is there a way to change the variable Node.js' REPL sets the last return value to? If you could change it from _ to __ or $_, you could then globalize the underscore module so you don't have to set it to a variable in every file: https://gist.github.com/3220108

I figured out a way to do this using the native Node repl module. Instead of just running node at the command line, put this in something like console.js and then run node console.js:

var repl = require('repl')
var vm = require('vm');

var _;

var server = repl.start({
  eval: function (cmd, context, filename, callback) {
    try {
      var match = cmd.match(/^\((.*)\n\)$/);
      var code = match ? match[1] : cmd;
      context._ = _;
      var result = vm.runInThisContext(code, filename);
    } catch (error) {
      console.log(error.stack);
    } finally {
      _ = context._;
      callback(null, result);
    }
  }
}).on('exit', function () {
  process.exit(0);
});

Here's a Gist: https://gist.github.com/jasoncrawford/6818650

I don't think you can change _ unless you want to edit the source. The node.js REPL appears to be implemented in lib/repl.js; if you poke around the library a little bit, you'll see things like this:

self.context._ = self.context[cmd] = lib;
self.outputStream.write(self.writer(lib) + '\n');

and like this:

self.context._ = ret;
self.outputStream.write(self.writer(ret) + '\n');

The self.context object is the REPL's global context or namespace (similar to window in a browser) so self.context._ = ret; is equivalent to saying _ = ret from the REPL's prompt.

So _ is hardwired and there's nothing you can do about it unless you want to hack the node.js libraries.