diff --git a/commands/core/core.drush.inc b/commands/core/core.drush.inc
index 1574128..f2e25f3 100644
--- a/commands/core/core.drush.inc
+++ b/commands/core/core.drush.inc
@@ -157,6 +157,7 @@ function core_drush_command() {
       'command' => 'The shell command to be executed.',
     ),
     'required-arguments' => TRUE,
+    'allow-additional-options' => TRUE,
     'examples' => array(
       'drush exec \'git pull\'' => 'Retrieve latest code from git',
     ),
@@ -730,7 +731,7 @@ function drush_core_quick_drupal() {
   drush_invoke('site-install', array(drush_get_option('profile')));
   // Log in with the admin user.
   // TODO: If site-install is given a sites-subdir other than 'default',
-  // then it will bootstrap to DRUSH_BOOTSTRAP_DRUPAL_SITE get the installer 
+  // then it will bootstrap to DRUSH_BOOTSTRAP_DRUPAL_SITE get the installer
   // to recognize the desired site directory. This somehow interferes
   // with our desire to bootstrap to DRUSH_BOOTSTRAP_DRUPAL_LOGIN here.
   // We could do the last few steps in a new process iff uri is not 'default'.
@@ -1021,6 +1022,9 @@ function drush_core_find_project_path($target) {
  * Command callback. Execute specified shell code. Often used by shell aliases
  * that start with !.
  */
-function drush_core_execute($script) {
-  return drush_op_system($script);
+function drush_core_execute() {
+  $args = func_get_args();
+  // @todo: get these options into $exec.
+  $options = drush_get_context('cli');
+  return (bool) !drush_op_system(implode(' ', $args));
 }
diff --git a/tests/shellAliasTest.php b/tests/shellAliasTest.php
index ce67ff7..56bae02 100644
--- a/tests/shellAliasTest.php
+++ b/tests/shellAliasTest.php
@@ -7,9 +7,9 @@
 class shellAliasesCase extends Drush_CommandTestCase {
 
   /*
-   * Assure that shell aliases expand as expected.
+   * Test shell aliases to Drush commands.
    */
-  public function testShellAliases() {
+  public function testDrushShellAlias() {
     $contents = "
       <?php
 
@@ -23,4 +23,25 @@ class shellAliasesCase extends Drush_CommandTestCase {
     $output = $this->getOutput();
     $this->assertContains('These options are applicable to most drush commands.', $output);
   }
-}
\ No newline at end of file
+
+  /*
+   * Test shell aliases to Bash commands. Assure we pass along extra arguments
+   * and options.
+   */
+  public function testBashShellAlias() {
+    $contents = "
+      <?php
+
+      \$options['shell-aliases'] = array('pull' => '!git pull');
+    ";
+    file_put_contents(UNISH_SANDBOX . '/drushrc.php', $contents);
+    $options = array(
+      'config' => UNISH_SANDBOX,
+      'simulate' => NULL,
+      'rebase' => NULL,
+    );
+    $this->drush('pull', array('origin'), $options);
+    $output = $this->getOutput();
+    $this->assertContains('git pull origin --rebase', $output);
+  }
+}
