diff --git a/examples/example.drushrc.php b/examples/example.drushrc.php
index a1d5e48..e3673f4 100644
--- a/examples/example.drushrc.php
+++ b/examples/example.drushrc.php
@@ -89,9 +89,11 @@
 // Separate by : (Unix-based systems) or ; (Windows).
 # $options['i'] = 'sites/default:profiles/myprofile';
 
-// Specify additional directories to search for *.alias.drushrc.php
-// and *.aliases.drushrc.php files
-# $options['alias-path'] = '/path/to/aliases:/path2/to/more/aliases';
+// Specify directories to search for *.alias.drushrc.php and 
+// *.aliases.drushrc.php files.  Overrides previous definitions.
+# $options['alias-path'] = array('/path/to/aliases','/path2/to/more/aliases');
+// Specify additional directories to search for alias files.
+# $options['alias-path'][] = '/path/to/aliases';
 
 // Specify directory where sql-sync will store persistent dump files.
 // Keeping the dump files around will improve the performance of rsync
diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index 148fadc..f9ab50d 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -530,6 +530,13 @@ function _drush_bootstrap_base_environment() {
   if (!file_exists(DRUSH_BASE_PATH . '/README.txt') && file_exists(drush_get_context('SHARE_PREFIX', '/usr') . '/share/doc/drush') . '/README.txt') {
     drush_set_context('DOC_PREFIX', drush_get_context('SHARE_PREFIX', '/usr') . '/share/doc/drush');
   }
+  $alias_path[] = drush_get_context('ETC_PREFIX', '') . '/etc/drush';
+  $alias_path[] = dirname(__FILE__) . '/..';
+  $alias_path[] = dirname(__FILE__) . '/../aliases';
+  if(!is_null(drush_server_home())) {
+    $alias_path[] = drush_server_home() . '/.drush';
+  }
+  drush_set_context('ALIAS_PATH', $alias_path);
 }
 
 function _drush_bootstrap_global_options() {
diff --git a/includes/command.inc b/includes/command.inc
index ff30e4b..46bd2c0 100644
--- a/includes/command.inc
+++ b/includes/command.inc
@@ -1049,6 +1049,9 @@ function _drush_add_commandfiles($searchpath, $phase = NULL, $reset = FALSE) {
   static $evaluated = array();
   static $deferred = array();
 
+  $alias_path = (array) drush_get_context('ALIAS_PATH', array());
+  drush_set_context('ALIAS_PATH', array_unique(array_merge($alias_path, $searchpath)));
+
   $cache =& drush_get_context('DRUSH_COMMAND_FILES', array());
 
   if (sizeof($searchpath)) {
diff --git a/includes/context.inc b/includes/context.inc
index 9f51b67..f3f816d 100644
--- a/includes/context.inc
+++ b/includes/context.inc
@@ -143,6 +143,7 @@ function drush_load_config($context) {
 function drush_load_config_file($context, $config) {
   if (file_exists($config)) {
     $options = $aliases = $command_specific = $override = array();
+    $options['alias-path'] = drush_get_context('ALIAS_PATH', array());
     drush_log(dt('Loading drushrc "!config" into "!context" scope.', array('!config' => realpath($config), '!context' => $context)), 'bootstrap');
     $ret = @include_once($config);
     if ($ret === FALSE) {
@@ -217,6 +218,11 @@ function drush_set_config_special_contexts(&$options) {
     if ($has_command_specific) {
       drush_command_default_options();
     }
+    
+    if (array_key_exists('alias-path', $options)) {
+      drush_set_context('ALIAS_PATH', $options['alias-path']);
+      unset($options['alias-path']);
+    }
   }
 }
 
diff --git a/includes/drush.inc b/includes/drush.inc
index 4b8fd8e..d62235f 100644
--- a/includes/drush.inc
+++ b/includes/drush.inc
@@ -353,7 +353,7 @@ function drush_get_global_options($brief = FALSE) {
     $options['cache-default-class'] = array('description' => "A cache backend class that implements DrushCacheInterface.");
     $options['cache-class-<bin>']   = array('description' => "A cache backend class that implements DrushCacheInterface to use for a specific cache bin.");
     $options['early']               = array('description' => "Include a file (with relative or full path) and call the drush_early_hook() function (where 'hook' is the filename). The function is called pre-bootstrap and offers an opportunity to alter the drush bootstrap environment or process (returning FALSE from the function will continue the bootstrap), or return output very rapidly (e.g. from caches). See includes/complete.inc for an example.");
-    $options['alias-path']          = array('description' => "Specifies the list of paths where drush will search for alias files. Array only.");
+    $options['alias-path']          = array('description' => "Specifies the list of paths where drush will search for alias files. Separate paths with ':'.");
     $options['backup-location']     = array('description' => "Specifies the directory where drush will store backups.");
     $options['complete-debug']      = array('hidden' => TRUE, 'description' => "Turn on debug mode forf completion code");
     $options['check_os']            = array('hidden' => TRUE, 'description' => "Enable or disable O.S. testing, and warn user of potential incompabilities.");
diff --git a/includes/sitealias.inc b/includes/sitealias.inc
index fc3c0b1..276cb93 100644
--- a/includes/sitealias.inc
+++ b/includes/sitealias.inc
@@ -291,17 +291,10 @@ function drush_sitealias_alias_path($alias_path_context = NULL) {
     if (isset($drupal_root)) {
       $site_paths[] = $drupal_root;
     }
-    $alias_path = (array) drush_get_option('alias-path', array());
-    if (empty($alias_path)) {
-      $alias_path[] = drush_get_context('ETC_PREFIX', '') . '/etc/drush';
-      $alias_path[] = dirname(__FILE__) . '/..';
-      $alias_path[] = dirname(__FILE__) . '/../aliases';
-      if(!is_null(drush_server_home())) {
-        $alias_path[] = drush_server_home() . '/.drush';
-      }
-    }
+    $alias_path = (array) drush_get_context('ALIAS_PATH', array());
+    $cli_alias_path = explode(':', drush_get_option('alias-path', ''));
 
-    return array_unique(array_merge($alias_path, $site_paths));
+    return array_unique(array_merge($alias_path, $site_paths, $cli_alias_path));
   }
 }
 
