Improve rbenv init instructions for fish

Fish user config file `~/.config/fish/config.fish` loads for every
instance of fish shell, not just interactive ones. Since it's
unnecessary and dangerous to eval `rbenv init -` output in
non-interactive shells, wrap the invocation in a conditional that checks
if the current shell is interactive.

Fixes #501
This commit is contained in:
Mislav Marohnić 2013-12-06 16:45:22 +01:00
parent 95a039aaaa
commit be5e1a4ded
2 changed files with 7 additions and 1 deletions

View file

@ -77,7 +77,7 @@ if [ -z "$print" ]; then
echo echo
case "$shell" in case "$shell" in
fish ) fish )
echo '. (rbenv init -|psub)' echo 'status --is-interactive; and . (rbenv init -|psub)'
;; ;;
* ) * )
echo 'eval "$(rbenv init -)"' echo 'eval "$(rbenv init -)"'

View file

@ -38,6 +38,12 @@ load test_helper
assert_line ". '${root}/libexec/../completions/rbenv.fish'" assert_line ". '${root}/libexec/../completions/rbenv.fish'"
} }
@test "fish instructions" {
run rbenv-init fish
assert [ "$status" -eq 1 ]
assert_line 'status --is-interactive; and . (rbenv init -|psub)'
}
@test "option to skip rehash" { @test "option to skip rehash" {
run rbenv-init - --no-rehash run rbenv-init - --no-rehash
assert_success assert_success