diff --git a/examples/example.drushrc.php b/examples/example.drushrc.php
index 40fd2a0..47fb99d 100644
--- a/examples/example.drushrc.php
+++ b/examples/example.drushrc.php
@@ -85,6 +85,16 @@
 // Specify Git clones for drupal.org extensions.
 # $options['package-handler'] = 'git_drupalorg';
 
+// Add a 'clone' Drush shell alias to simplify (cached) cloning from drupal.org.
+# $options['shell-aliases']['clone'] = 'pm-download --package-handler=git_drupalorg --gitusername=sun --cache';
+
+// Drush automatically determines the user's home directory by checking for HOME
+// (Unix) or HOMEDRIVE/HOMEPATH (Windows) environment variables. The home path
+// is used for caching Drush commands, and for the git --reference cache.
+// You may want to specify a path that is not user-specific here; e.g., to keep
+// cache files on the same filesystem, or to share caches with other users.
+# $options['home'] = 'H:/drush';
+
 // Specify additional directories to search for *.drush.inc files
 // Separate by : (Unix-based systems) or ; (Windows).
 # $options['i'] = 'sites/default:profiles/myprofile';
diff --git a/includes/environment.inc b/includes/environment.inc
index d5d18ff..c315e67 100644
--- a/includes/environment.inc
+++ b/includes/environment.inc
@@ -647,7 +647,11 @@ function drush_is_local_host($host) {
  * Return the user's home directory.
  */
 function drush_server_home() {
-  $home = NULL;
+  // Allow to set $options['home'] in drushrc.php and on command line.
+  $home = drush_get_option('home');
+  if (isset($home)) {
+    return $home;
+  }
   // $_SERVER['HOME'] isn't set on windows and generates a Notice.
   if (!empty($_SERVER['HOME'])) {
     $home = $_SERVER['HOME'];
