diff --git a/ChangeLog.md b/ChangeLog.md index e857bbc8..cac08500 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,9 @@ +### 0.3.10 / TBA + +#### auto.sh + +* Preserve the value of `$_` for `bash` users. (@HaleTom) + ### 0.3.9 / 2014-11-23 #### chruby.sh diff --git a/share/chruby/auto.sh b/share/chruby/auto.sh index 88f3cb34..1fe60767 100644 --- a/share/chruby/auto.sh +++ b/share/chruby/auto.sh @@ -2,6 +2,7 @@ unset RUBY_AUTO_VERSION function chruby_auto() { local dir="$PWD/" version + local old_="$1" # Save $_ for bash users until [[ -z "$dir" ]]; do dir="${dir%/*}" @@ -22,6 +23,7 @@ function chruby_auto() { chruby_reset unset RUBY_AUTO_VERSION fi + : "$old_" # restore $_ (last argument of last command executed) } if [[ -n "$ZSH_VERSION" ]]; then @@ -29,5 +31,5 @@ if [[ -n "$ZSH_VERSION" ]]; then preexec_functions+=("chruby_auto") fi elif [[ -n "$BASH_VERSION" ]]; then - trap '[[ "$BASH_COMMAND" != "$PROMPT_COMMAND" ]] && chruby_auto' DEBUG + trap '[[ "$BASH_COMMAND" != "$PROMPT_COMMAND" ]] && chruby_auto "$_"' DEBUG fi diff --git a/test/unit/chruby_auto_test.sh b/test/unit/chruby_auto_test.sh index 3011f38e..832a325d 100755 --- a/test/unit/chruby_auto_test.sh +++ b/test/unit/chruby_auto_test.sh @@ -157,6 +157,11 @@ function test_chruby_auto_ruby_version_containing_options() "$expected_auto_version" "$RUBY_AUTO_VERSION" } +function test_chruby_auto_preserves_dollar_underscore() { + : foo # Run a null command to set $_ to "foo" + assertEquals "value of $_ does not change" "$_" "foo" +} + function tearDown() { cd "$original_pwd"