rvm 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -17,15 +17,13 @@ tools_path_identifier() {
17
17
  echo "Usage: rvm tools path-identifier 'path-to-heck'"
18
18
  return 1
19
19
  fi
20
- # Change to the directory. Do in subshell to keep the env correct.
21
- (
22
- source "$rvm_scripts_path/rvm"
23
- builtin cd "$1"
24
- rvm_promptless=1 __rvm_project_rvmrc
25
- rvmrc_result="$?"
26
- __rvm_environment_identifier
27
- exit $rvmrc_result
28
- )
20
+
21
+ source "$rvm_scripts_path/rvm"
22
+ builtin cd "$1"
23
+ rvm_promptless=1 __rvm_project_rvmrc
24
+ rvmrc_result="$?"
25
+ __rvm_environment_identifier
26
+ exit $rvmrc_result
29
27
  }
30
28
 
31
29
  tools_strings() {
@@ -76,7 +76,7 @@ if [[ -z "$rvm_path" ]] ; then rvm_path="${rvm_prefix}rvm" ; fi
76
76
 
77
77
  source scripts/initialize
78
78
 
79
- if \grep -q 'scripts/rvm' $HOME/.bash* 2>/dev/null || \grep -q 'scripts/rvm' $HOME/.zsh* 2>/dev/null; then
79
+ if \grep -q 'scripts/rvm' "$HOME"/.bash* 2>/dev/null || \grep -q 'scripts/rvm' "$HOME"/.zsh* 2>/dev/null; then
80
80
  if [[ -d "$rvm_path" ]] && [[ -s "${rvm_path}/scripts/rvm" ]] ; then
81
81
  export upgrade_flag=1
82
82
  else
@@ -93,7 +93,7 @@ __rvm_initialize
93
93
  #
94
94
  item="$(tput setaf 2)* $(tput sgr0)"
95
95
  question="\n$(tput setaf 2)<?>$(tput sgr0)"
96
- cwd=$PWD
96
+ cwd="$PWD"
97
97
  source_path="${source_path:-$cwd}"
98
98
  rvm_archives_path="${rvm_archives_path:-"$rvm_path/archives"}"
99
99
  rvm_src_path="${rvm_src_path:-"$rvm_path/src"}"
@@ -151,7 +151,7 @@ done ; unset dir_name
151
151
  spinner
152
152
  if [[ ! -s "$rvm_config_path/user" ]] ; then
153
153
  \mkdir -p "$rvm_config_path/"
154
- echo '# Users settings file, overrides db file settings and persists across installs.' >> $rvm_config_path/user
154
+ echo '# Users settings file, overrides db file settings and persists across installs.' >> "$rvm_config_path/user"
155
155
  fi
156
156
 
157
157
  scripts=("monitor" "match" "log" "install" "color" "db" "fetch" "log" "set" "package")
@@ -170,7 +170,7 @@ for file in rvm-prompt rvm rvmsudo rvm-shell rvm-auto-ruby ; do
170
170
  \cp -f "$source_path/binscripts/$file" $rvm_bin_path/
171
171
  done
172
172
  spinner
173
- chmod +x $rvm_bin_path/*
173
+ chmod +x "$rvm_bin_path"/*
174
174
 
175
175
  #
176
176
  # RC Files
@@ -179,17 +179,17 @@ spinner
179
179
  if [[ -n "$rvm_auto_flag" ]] ; then
180
180
  printf "Checking rc files... ($rvm_rc_files)"
181
181
  if [[ "$rvm_loaded_flag" != "1" ]] ; then
182
- for rcfile in $(echo $rvm_rc_files) ; do
182
+ for rcfile in $(printf $rvm_rc_files) ; do
183
183
  if [[ ! -f $rcfile ]] ; then \touch $rcfile ; fi
184
184
  if [[ -s "$HOME/.profile" ]] ; then
185
185
  if ! \grep -q '.profile' "$rcfile" ; then
186
186
  echo " Adding 'if [[ -s \$HOME/.profile ]] ; then source \$HOME ; fi' to $rcfile."
187
- printf "\n# rvm-install added line:\nif [[ -s \$HOME/.profile ]] ; then source \$HOME/.profile ; fi\n" >> $rcfile
187
+ printf "\n# rvm-install added line:\nif [[ -s \$HOME/.profile ]] ; then source \$HOME/.profile ; fi\n" >> "$rcfile"
188
188
  fi
189
189
  fi
190
190
  if ! \grep -q "scripts\/rvm" "$rcfile" ; then
191
191
  echo " Adding 'if [[ -s $rvm_scripts_path/rvm ]] ; then source $rvm_scripts_path/rvm ; fi' to $rcfile."
192
- printf "\n# rvm-install added:\nif [[ -s $rvm_scripts_path/rvm ]] ; then source $rvm_scripts_path/rvm ; fi\n" >> $rcfile
192
+ printf "\n# rvm-install added:\nif [[ -s $rvm_scripts_path/rvm ]] ; then source $rvm_scripts_path/rvm ; fi\n" >> "$rcfile"
193
193
  fi
194
194
  done
195
195
  fi
@@ -254,26 +254,27 @@ done
254
254
  spinner
255
255
  printf "\r*" # Stop spinner.
256
256
 
257
- for gemset in $rvm_path/gems/*\%* ; do
257
+ for gemset in "$rvm_path"/gems/*\%* ; do
258
258
  new_path=${gemset/\%/${rvm_gemset_separator}}
259
259
  if [[ -d "$gemset" ]] && [[ ! -d "$new_path" ]] ; then
260
- printf "\n Renaming $(basename $gemset) to $(basename $new_path) for new gemset separator."
261
- mv $gemset $new_path
260
+ printf "\n Renaming $(basename "$gemset") to $(basename "$new_path") for new gemset separator."
261
+ mv "$gemset" "$new_path"
262
262
  fi
263
263
  done
264
264
 
265
- for gemset in $rvm_path/gems/*\+* ; do
265
+ for gemset in "$rvm_path"/gems/*\+* ; do
266
266
  new_path=${gemset/\+/${rvm_gemset_separator}}
267
267
  if [[ -d "$gemset" ]] && [[ ! -d "$new_path" ]] ; then
268
- printf "\n Renaming $(basename $gemset) to $(basename $new_path) for new gemset separator."
268
+ printf "\n Renaming $(basename "$gemset") to $(basename "$new_path") for new gemset separator."
269
269
  mv $gemset $new_path
270
270
  fi
271
271
  done
272
- for gemset in $rvm_path/gems/*\@ ; do
272
+
273
+ for gemset in "$rvm_path"/gems/*\@ ; do
273
274
  new_path=$(echo $gemset | sed -e 's#\@$##')
274
275
  if [[ -d "$gemset" ]] && [[ ! -d "$new_path" ]] ; then
275
- printf "\n Fixing: $(basename $gemset) to $(basename $new_path) for new gemset separator."
276
- mv $gemset $new_path
276
+ printf "\n Fixing: $(basename "$gemset") to $(basename "$new_path") for new gemset separator."
277
+ mv "$gemset" "$new_path"
277
278
  fi
278
279
  done
279
280
 
@@ -281,18 +282,16 @@ done
281
282
  if [[ -s "$rvm_config_path/default" ]]; then
282
283
  original_version="$(basename "$(\grep GEM_HOME "$rvm_config_path/default" | awk -F"'" '{print $2}' | sed "s#\%#${rvm_gemset_separator}#")")"
283
284
  if [[ -n "$original_version" ]]; then
284
- $rvm_scripts_path/alias create default "$original_version" &> /dev/null
285
- fi
286
- unset original_version
285
+ "$rvm_scripts_path/alias" create default "$original_version" &> /dev/null
286
+ fi ; unset original_version
287
287
  \rm -rf "$rvm_config_path/default"
288
288
  fi
289
289
 
290
290
  #
291
291
  # End of gemset migration.
292
292
  #
293
-
294
293
  printf "\n Correct permissions for base binaries in $rvm_bin_path..."
295
- \mkdir -p $rvm_bin_path
294
+ \mkdir -p "$rvm_bin_path"
296
295
  for file in rvm rvmsudo rvm-shell rvm-auto-ruby; do
297
296
  [[ -s "$rvm_bin_path/$file" ]] && chmod +x "$rvm_bin_path/$file"
298
297
  done; unset file
@@ -17,12 +17,12 @@ confirm() {
17
17
  }
18
18
 
19
19
  die_with_error() {
20
- $rvm_scripts_path/log "fail" "$1"
20
+ "$rvm_scripts_path/log" "fail" "$1"
21
21
  exit "${2:-1}"
22
22
  }
23
23
 
24
24
  expand_ruby_name() {
25
- $rvm_scripts_path/tools strings "$1" | awk -F"$rvm_gemset_separator" '{print $1}'
25
+ "$rvm_scripts_path/tools" strings "$1" | awk -F"$rvm_gemset_separator" '{print $1}'
26
26
  }
27
27
 
28
28
  expand_existing_ruby() {
@@ -33,7 +33,7 @@ expand_existing_ruby() {
33
33
  echo "$ruby_name"
34
34
  return 0
35
35
  fi
36
- done < <($rvm_scripts_path/list strings | tr ' ' '\n' | sort -ur | \grep "^$prefix" | \grep -v '-head$' | head -n1)
36
+ done < <("$rvm_scripts_path/list" strings | tr ' ' '\n' | sort -ur | \grep "^$prefix" | \grep -v '-head$' | head -n1)
37
37
  return 1
38
38
  }
39
39
 
@@ -46,18 +46,18 @@ upgrade_ruby() {
46
46
  confirm "Are you sure you wish to upgrade from $expanded_source to $expanded_destination?" || die_with_error "Cancelling upgrade."
47
47
 
48
48
  if [[ ! -d "$rvm_rubies_path/$expanded_destination" ]]; then
49
- $rvm_scripts_path/log "info" "Installing new ruby $expanded_destination"
49
+ "$rvm_scripts_path/log" "info" "Installing new ruby $expanded_destination"
50
50
  $rvm_bin_path/rvm install "$expanded_destination"
51
51
  result="$?"
52
52
  [[ "$result" -gt 0 ]] && die_with_error "Unable to install ruby $expanded_destination. Please install it manually to continue." "$result"
53
53
  fi
54
54
 
55
- $rvm_scripts_path/log "info" "Migrating gems from $expanded_source to $expanded_destination"
56
- $rvm_scripts_path/migrate "$expanded_source" "$expanded_destination"
55
+ "$rvm_scripts_path/log" "info" "Migrating gems from $expanded_source to $expanded_destination"
56
+ "$rvm_scripts_path/migrate" "$expanded_source" "$expanded_destination"
57
57
  result="$?"
58
58
  [[ "$result" -gt 0 ]] && die_with_error "Error migrating gems." "$result"
59
59
 
60
- $rvm_scripts_path/log "info" "Upgrade complete!"
60
+ "$rvm_scripts_path/log" "info" "Upgrade complete!"
61
61
  }
62
62
 
63
63
  [[ -z "$1" ]] && usage
@@ -42,17 +42,17 @@ __rvm_teardown() {
42
42
  }
43
43
 
44
44
  __rvm_dump_environment() {
45
- local dump_environment_file="$(echo "$rvm_dump_environment_flag" | awk -F, '{print $1}')"
46
- local dump_environment_type="$(echo "$rvm_dump_environment_flag" | awk -F, '{print $2}')"
45
+ # Note: This assumes that there is a ','
46
+ local dump_environment_file="${rvm_dump_environment_flag/,*/}"
47
+ local dump_environment_type="${rvm_dump_environment_flag/*,/}"
47
48
  if [[ -n "$dump_environment_file" && -n "$dump_environment_type" ]]; then
48
49
  if [[ "$dump_environment_type" == "atheis"* ]]; then
49
50
  \rm -rf "$dump_environment_file" && ln -s /dev/null "$dump_environment_file" >/dev/null 2>&1
50
51
  else
51
- $rvm_scripts_path/environment-convertor "$dump_environment_type" "$(__rvm_environment_identifier)" > "$dump_environment_file"
52
+ "$rvm_scripts_path/environment-convertor" "$dump_environment_type" "$(__rvm_environment_identifier)" > "$dump_environment_file"
52
53
  [[ "$?" -gt 0 ]] && \rm -rf "$dump_environment_file"
53
54
  fi
54
- fi
55
- unset rvm_dump_environment_flag
55
+ fi ; unset rvm_dump_environment_flag
56
56
  }
57
57
 
58
58
  # Return a list of directories under a given base path.
@@ -113,7 +113,7 @@ __rvm_quote_args_with_shift() {
113
113
 
114
114
  __rvm_warn_on_rubyopt() {
115
115
  if [[ -n "$RUBYOPT" ]]; then
116
- $rvm_scripts_path/log "warn" "Please note: You have the RUBYOPT environment variable set and this may interfere with normal rvm operations. We sugges unsetting it."
116
+ "$rvm_scripts_path"/log "warn" "Please note: You have the RUBYOPT environment variable set and this may interfere with normal rvm operations. We sugges unsetting it."
117
117
  return 1
118
118
  else
119
119
  return 0
@@ -148,20 +148,20 @@ __rvm_set_path_variable() {
148
148
  if [[ -d "$1" ]] ; then
149
149
  eval "${path_variable}=${1}"
150
150
  else
151
- $rvm_scripts_path/log "error" "'$1' is not a valid path."
151
+ "$rvm_scripts_path/log" "error" "'$1' is not a valid path."
152
152
  fi ; unset path_variable
153
153
  }
154
154
 
155
155
  # Clean all *duplicate* items out of the path. (keep first occurrence of each)
156
156
  __rvm_clean_path() {
157
- PATH=$(echo $PATH | \tr -s ':' '\n' | awk '!($0 in a){a[$0];print}' | \tr -s '\n' ':' | sed 's#:$##')
157
+ PATH="$(echo $PATH | \tr -s ':' '\n' | awk '!($0 in a){a[$0];print}' | \tr -s '\n' ':' | sed 's#:$##')"
158
158
  export PATH
159
159
  builtin hash -r
160
160
  }
161
161
 
162
162
  # Clean all rvm items out of the current working path.
163
163
  __rvm_remove_rvm_from_path() {
164
- PATH=$(echo $PATH | \tr -s ':' '\n' | \grep -v "rvm" | \tr -s '\n' ':' | sed 's#:$##')
164
+ PATH="$(echo $PATH | \tr -s ':' '\n' | \grep -v "$rvm_path" | \tr -s '\n' ':' | sed 's#:$##')"
165
165
  export PATH
166
166
  builtin hash -r
167
167
  }
@@ -170,9 +170,9 @@ __rvm_remove_rvm_from_path() {
170
170
  __rvm_run() {
171
171
  log_file_name="$1" ; command="$2" ; message="$3"
172
172
  if [[ -z "$rvm_ruby_log_path" ]] ; then rvm_ruby_log_path="$rvm_log_path" ; fi
173
- if [[ -n "$message" ]] ; then $rvm_scripts_path/log "info" "$message" ; fi
173
+ if [[ -n "$message" ]] ; then "$rvm_scripts_path/log" "info" "$message" ; fi
174
174
  if [[ -n "$rvm_debug_flag" ]] ; then
175
- $rvm_scripts_path/log "debug" "Executing: $command"
175
+ "$rvm_scripts_path/log" "debug" "Executing: $command"
176
176
  fi
177
177
 
178
178
  \mkdir -p "$(dirname "$rvm_ruby_log_path/$log_file_name.log")"
@@ -183,7 +183,7 @@ __rvm_run() {
183
183
  else
184
184
  eval "nice -n $rvm_niceness $command" >> $rvm_ruby_log_path/$log_file_name.log 2>> $rvm_ruby_log_path/$log_file_name.error.log
185
185
  fi
186
- if [[ $? -gt 0 ]] ; then $rvm_scripts_path/log "error" "Error running '$command', please check $rvm_ruby_log_path/$log_file_name*.log" ; __rvm_pushpop ; return 1 ; fi
186
+ if [[ $? -gt 0 ]] ; then "$rvm_scripts_path/log" "error" "Error running '$command', please check $rvm_ruby_log_path/$log_file_name*.log" ; __rvm_pushpop ; return 1 ; fi
187
187
  unset log_file command
188
188
  }
189
189
 
@@ -192,9 +192,9 @@ __rvm_run_with_env() {
192
192
  log_file_name="$1" ; env_name="$2" ; command="$3" ; message="$4"
193
193
  if [[ -z "$env_name" ]]; then env_name="$(__rvm_environment_identifier)"; fi
194
194
  if [[ -z "$rvm_ruby_log_path" ]] ; then rvm_ruby_log_path="$rvm_log_path" ; fi
195
- if [[ -n "$message" ]] ; then $rvm_scripts_path/log "info" "$message" ; fi
195
+ if [[ -n "$message" ]] ; then "$rvm_scripts_path/log" "info" "$message" ; fi
196
196
  if [[ -n "$rvm_debug_flag" ]] ; then
197
- $rvm_scripts_path/log "debug" "Executing: $command in environment "$env_name""
197
+ "$rvm_scripts_path/log" "debug" "Executing: $command in environment "$env_name""
198
198
  fi
199
199
 
200
200
  \mkdir -p "$(dirname "$rvm_ruby_log_path/$log_file_name.log")"
@@ -205,13 +205,13 @@ __rvm_run_with_env() {
205
205
  else
206
206
  eval "nice -n $rvm_niceness __rvm_with_env '$env_name' '$command'" >> $rvm_ruby_log_path/$log_file_name.log 2>> $rvm_ruby_log_path/$log_file_name.error.log
207
207
  fi
208
- if [[ $? -gt 0 ]] ; then $rvm_scripts_path/log "error" "Error running '$command' under $env_name, please check $rvm_ruby_log_path/$log_file_name*.log" ; __rvm_pushpop ; return 1 ; fi
208
+ if [[ $? -gt 0 ]] ; then "$rvm_scripts_path/log" "error" "Error running '$command' under $env_name, please check $rvm_ruby_log_path/$log_file_name*.log" ; __rvm_pushpop ; return 1 ; fi
209
209
  unset log_file command env_name
210
210
  }
211
211
 
212
212
  # Unset both rvm variables as well as ruby-specific variables
213
213
  # Preserve gemset if 'rvm_sticky' is set (persist gemset unless clear is explicitely called).
214
- __rvm_cleanup_variables() {
214
+ __rvm_cleanse_variables() {
215
215
  __rvm_unset_ruby_variables
216
216
 
217
217
  if [[ "$rvm_sticky_flag" = "1" ]] ; then export rvm_gemset_name ; else unset rvm_gemset_name ; fi
@@ -230,8 +230,8 @@ __rvm_with_env() {
230
230
  rvm_env_command="$(echo "$2" | sed "s/rvm /rvm $rvm_env_args /")"
231
231
  # Subshells!
232
232
  (
233
- source $rvm_scripts_path/rvm
234
- rvm $rvm_env_args use $1 && eval "$rvm_env_command"
233
+ source "$rvm_scripts_path/rvm"
234
+ rvm "$rvm_env_args" use $1 && eval "$rvm_env_command"
235
235
  )
236
236
  unset rvm_env_args rvm_env_command
237
237
  }
@@ -240,8 +240,8 @@ __rvm_with_env() {
240
240
  # with things like rbx etc which require a ruby be installed.
241
241
  __rvm_18_compat_ruby() {
242
242
  rubies=""
243
- for ruby_name in $(\ls $rvm_rubies_path); do
244
- if [[ ! -L "$rvm_rubies_path/$ruby_name" ]] && $rvm_scripts_path/match "$ruby_name" '^(ruby-1.8.[[:digit:]]|rbx|ree)-'; then
243
+ for ruby_name in $(\ls "$rvm_rubies_path"); do
244
+ if [[ ! -L "$rvm_rubies_path/$ruby_name" ]] && [[ "$ruby_name" =~ 1.8. || "$ruby_name" =~ rbx- || "$ruby_name" =~ ree- ]] ; then
245
245
  rubies="$rubies $ruby_name"
246
246
  fi
247
247
  done; unset ruby_name
@@ -253,20 +253,18 @@ __rvm_ensure_has_18_compat_ruby() {
253
253
  if [[ -z "$(__rvm_18_compat_ruby)" ]]; then
254
254
  # TODO: install currently doesn't return the correct status.
255
255
  local compat_result=0
256
- if ! ( $rvm_scripts_path/manage install 1.8.7 ); then
257
- $rvm_scripts_path/log "fail" "To proceed rvm requires a 1.8-compatible ruby is installed. We attempted to install 1.8.7 automatically but it failed."
258
- $rvm_scripts_path/log "fail" "Please install it manually (or a compatible alternative) to proceed."
256
+ if ! ( "$rvm_scripts_path/manage" install 1.8.7 ); then
257
+ "$rvm_scripts_path/log" "fail" "To proceed rvm requires a 1.8-compatible ruby is installed. We attempted to install 1.8.7 automatically but it failed."
258
+ "$rvm_scripts_path/log" "fail" "Please install it manually (or a compatible alternative) to proceed."
259
259
  compat_result=1
260
- fi
261
- unset original_ruby
260
+ fi ; unset original_ruby
262
261
  return $compat_result
263
262
  fi
264
263
  }
265
264
 
266
265
  __rvm_inherit_trace_flag() {
267
266
  if [[ -n "$rvm_trace_flag" ]]; then
268
- set -x
269
- export rvm_trace_flag
267
+ set -x ; export rvm_trace_flag
270
268
  fi
271
269
  }
272
270
 
@@ -276,8 +274,7 @@ __rvm_cleanup_temp_for() {
276
274
  [[ -z "$1" ]] && return 1
277
275
  if [[ -d "$rvm_tmp_path/" ]]; then
278
276
  \rm -rf "$rvm_tmp_path/$1"* >/dev/null 2>&1
279
- fi
280
- exit
277
+ fi ; exit
281
278
  }
282
279
 
283
280
  __rvm_cleanup_temp_on_exit() {
@@ -290,7 +287,7 @@ __rvm_set_rvmrc() {
290
287
 
291
288
  if [[ -s .rvmrc ]] ; then
292
289
  mv .rvmrc .rvmrc.$(date +%m.%d.%Y-%H:%M:%S)
293
- $rvm_scripts_path/log "warning" ".rvmrc is not empty, moving aside to preserve."
290
+ "$rvm_scripts_path/log" "warning" ".rvmrc is not empty, moving aside to preserve."
294
291
  fi
295
292
 
296
293
  local identifier=$(__rvm_environment_identifier)
@@ -299,16 +296,15 @@ __rvm_set_rvmrc() {
299
296
 
300
297
  unset flags
301
298
  else
302
- $rvm_scripts_path/log "error" ".rvmrc cannot be set in your home directory. \n The home .rvmrc is for global rvm settings only."
299
+ "$rvm_scripts_path/log" "error" ".rvmrc cannot be set in your home directory. \n The home .rvmrc is for global rvm settings only."
303
300
  fi
304
-
305
301
  }
306
302
  __rvm_load_rvmrc() {
307
303
  [[ -z "$rvm_ignore_rvmrc" ]] && return
308
304
  for rvmrc in /etc/rvmrc $HOME/.rvmrc ; do
309
305
  if [[ -f "$rvmrc" ]] ; then
310
306
  if \grep -q '^\s*rvm .*$' $rvmrc ; then
311
- $rvm_scripts_path/log "error" "$rvmrc is for rvm settings only.\nrvm CLI may NOT be called from within $rvmrc. \nSkipping the loading of $rvmrc"
307
+ "$rvm_scripts_path/log" "error" "$rvmrc is for rvm settings only.\nrvm CLI may NOT be called from within $rvmrc. \nSkipping the loading of $rvmrc"
312
308
  return 1
313
309
  else
314
310
  source "$rvmrc"
@@ -332,7 +328,7 @@ __rvm_benchmark() {
332
328
  old_rvm_ruby_string=$rvm_ruby_string
333
329
  unset rvm_ruby_string
334
330
  export rvm_ruby_strings
335
- $rvm_scripts_path/set $rvm_action $rvm_ruby_args
331
+ "$rvm_scripts_path/set" "$rvm_action" $rvm_ruby_args
336
332
  result=$?
337
333
  # Restore the state pre-sets.
338
334
  [[ -n "$old_rvm_ruby_string" ]] && rvm_ruby_string=$old_rvm_ruby_string
@@ -341,25 +337,25 @@ __rvm_benchmark() {
341
337
 
342
338
  # Loop over the currently installed rubies and refresh their binscripts.
343
339
  __rvm_bin_scripts() {
344
- for rvm_ruby_binary in $rvm_rubies_path/*/bin/ruby ; do
345
- if [[ -x "$rvm_ruby_binary" ]] ; then
346
- rvm_ruby_string=$(dirname "$rvm_ruby_binary" | xargs dirname | xargs basename)
347
- __rvm_select
348
- __rvm_bin_script
349
- fi
340
+ for rvm_ruby_binary in "$rvm_rubies_path"/*/bin/ruby ; do
341
+ if [[ -x "$rvm_ruby_binary" ]] ; then
342
+ rvm_ruby_string=$(dirname "$rvm_ruby_binary" | xargs dirname | xargs basename)
343
+ __rvm_select
344
+ __rvm_bin_script
345
+ fi
350
346
  done
351
347
  }
352
348
 
353
349
  # Write the bin/ wrapper script for currently selected ruby.
354
350
  # TODO: Adjust binscript to be able to handle all rubies not just the standard interpreteres.
355
351
  __rvm_bin_script() {
356
- $rvm_scripts_path/wrapper "$rvm_ruby_string"
352
+ "$rvm_scripts_path/wrapper" "$rvm_ruby_string"
357
353
  }
358
354
 
359
355
  # Add bin path if not present
360
356
  __rvm_conditionally_add_bin_path() {
361
- if echo "$PATH" | \tr ':' ' ' | \grep -vqF "$rvm_bin_path " ; then
362
- PATH="$rvm_bin_path:$PATH"
357
+ if echo "${PATH//:/ }" | \grep -vqF "$rvm_bin_path " ; then
358
+ PATH="${rvm_bin_path}:$PATH"
363
359
  builtin hash -r
364
360
  fi
365
361
  }
@@ -386,7 +382,7 @@ __rvm_reset() {
386
382
  __rvm_unset_ruby_variables
387
383
 
388
384
  for system_config in system_ruby system_gem_path system_user_gem_path ; do
389
- $rvm_scripts_path/db "$rvm_config_path/user" "$system_config" "delete"
385
+ "$rvm_scripts_path/db" "$rvm_config_path/user" "$system_config" "delete"
390
386
  done ; unset system_config variable
391
387
 
392
388
  \rm -f $rvm_bin_path/ruby $rvm_bin_path/gem $rvm_bin_path/rake $rvm_bin_path/irb $rvm_bin_path/default*
@@ -395,23 +391,23 @@ __rvm_reset() {
395
391
  # Implode removes the entire rvm installation under $rvm_path.
396
392
  __rvm_implode() {
397
393
  while : ; do
398
- $rvm_scripts_path/log "warn" "Are you SURE you wish for rvm to implode? This will remove $rvm_path ? (type 'yes' or 'no')"
394
+ "$rvm_scripts_path/log" "warn" "Are you SURE you wish for rvm to implode? This will remove $rvm_path ? (type 'yes' or 'no')"
399
395
  read response
400
396
  if [[ "yes" = "$response" ]] ; then
401
397
  if [[ "/" = "$rvm_path" ]] ; then
402
- $rvm_scripts_path/log "error" "remove '/' ?!... NO!"
398
+ "$rvm_scripts_path/log" "error" "remove '/' ?!... Ni!"
403
399
  else
404
400
  if [[ -d "$rvm_path" ]] ; then
405
- $rvm_scripts_path/log "info" "Hai! Removing $rvm_path"
406
- \rm -rf $rvm_path/
401
+ "$rvm_scripts_path/log" "info" "Hai! Removing $rvm_path"
402
+ \rm -rf "$rvm_path/"
407
403
  echo "$rvm_path has been removed."
408
404
  else
409
- $rvm_scripts_path/log "info" "It appears that $rvm_path is already non existant."
405
+ "$rvm_scripts_path/log" "info" "It appears that $rvm_path is already non existant."
410
406
  fi
411
407
  fi
412
408
  break
413
409
  elif [[ "no" = "$response" ]] ; then
414
- $rvm_scripts_path/log "info" "Cancelling implosion, no harm done :)"
410
+ "$rvm_scripts_path/log" "info" "Cancelling implosion, no harm done :)"
415
411
  break
416
412
  fi
417
413
  done
@@ -421,7 +417,7 @@ __rvm_implode() {
421
417
  __rvm_source_dir() {
422
418
  if [[ -z "$rvm_ruby_selected_flag" ]] ; then __rvm_select ; fi
423
419
  if [[ -z "$rvm_ruby_src_path" ]] ; then
424
- $rvm_scripts_path/log "fail" "No source directory exists for the default implementation."
420
+ "$rvm_scripts_path/log" "fail" "No source directory exists for the default implementation."
425
421
  else
426
422
  echo "$rvm_ruby_src_path"
427
423
  fi
@@ -449,7 +445,7 @@ __rvm_update() {
449
445
  fi
450
446
  [[ -n "$rvm_bin_flag" ]] && __rvm_bin_scripts
451
447
  # Update to the latest rubygems.
452
- [[ -n "$rvm_rubygems_flag" ]] && $rvm_scripts_path/rubygems current
448
+ [[ -n "$rvm_rubygems_flag" ]] && "$rvm_scripts_path/rubygems" current
453
449
 
454
450
  unset rvm_update_flag rvm_action rvm_self_flag rvm_ruby_revision rvm_bin_flag rvm_rubygems_flag
455
451
  __rvm_pushpop
@@ -472,7 +468,7 @@ __rvm_update_rvm() {
472
468
 
473
469
  __rvm_run "fetch" "$rvm_scripts_path/fetch 'http://rvm.beginrescueend.com/releases/rvm-${stable_version}.tar.gz'" "fetching rvm-${stable_version}.tar.gz"
474
470
 
475
- __rvm_run "extract" "gunzip \"$rvm_archives_path/rvm-${stable_version}.tar.gz\" | tar xf - -C $rvm_src_path" "Extracting rvm-${stable_version}.tar.gz ..."
471
+ __rvm_run "extract" "gunzip < \"$rvm_archives_path/rvm-${stable_version}.tar.gz\" | tar xf - -C $rvm_src_path" "Extracting rvm-${stable_version}.tar.gz ..."
476
472
 
477
473
  __rvm_run "install" "builtin cd $rvm_src_path/rvm-${stable_version}/ ; ./install" "Installing rvm-${stable_version}..."
478
474
  fi
@@ -482,14 +478,14 @@ __rvm_update_rvm() {
482
478
  }
483
479
 
484
480
  __rvm_reboot() {
485
- $rvm_scripts_path/log "warn" "Do you wish to reboot rvm? ('yes', or 'no')"
481
+ "$rvm_scripts_path/log" "warn" "Do you wish to reboot rvm? ('yes', or 'no')"
486
482
  read response
487
483
  if [[ "yes" = "$response" ]] ; then
488
484
  builtin cd $rvm_path
489
485
  __rvm_reset
490
- mv $rvm_path/archives ~/.archives
486
+ mv "$rvm_path/archives" "$HOME/.archives"
491
487
  if [[ "/" = "$rvm_path" ]] ; then
492
- $rvm_scripts_path/log "error" "remove '/' ?!... NO!"
488
+ "$rvm_scripts_path/log" "error" "remove '/' ?!... NO!"
493
489
  else
494
490
  if [[ -d "$rvm_path" ]] ; then \rm -rf "$rvm_path/" ; fi
495
491
  fi
@@ -497,14 +493,14 @@ __rvm_reboot() {
497
493
  __rvm_update_rvm
498
494
  source $rvm_path/scripts/rvm
499
495
  else
500
- $rvm_scripts_path/log "info" "Carry on then..."
496
+ "$rvm_scripts_path/log" "info" "Carry on then..."
501
497
  fi ; unset response
502
498
  }
503
499
 
504
500
  # Create the irbrc for the currently selected ruby installation.
505
501
  __rvm_irbrc() {
506
502
  if [[ -d "$rvm_ruby_home" ]] && [[ ! -s "$rvm_ruby_irbrc" ]] ; then
507
- \cp $rvm_scripts_path/irbrc $rvm_ruby_irbrc
503
+ \cp "$rvm_scripts_path/irbrc" "$rvm_ruby_irbrc"
508
504
  fi
509
505
  }
510
506
 
@@ -540,7 +536,7 @@ __rvm_state() {
540
536
  __rvm_inspect() {
541
537
  for binary in $rvm_ruby_args ; do
542
538
  actual_file="$(command -v $binary)"
543
- $rvm_scripts_path/log "info" "$actual_file:"
539
+ "$rvm_scripts_path/log" "info" "$actual_file:"
544
540
  if [[ -n "$rvm_shebang_flag" ]] ; then head -n 1 < "$actual_file" ; fi
545
541
  if [[ -n "$rvm_env_flag" ]] ; then awk '/ENV/' < "$actual_file" ; fi
546
542
  if [[ -n "$rvm_path_flag" ]] ; then awk '/PATH/' < "$actual_file" ; fi
@@ -600,18 +596,18 @@ __rvm_become() {
600
596
 
601
597
  __rvm_ensure_has_environment_files() {
602
598
  local environment_identifier="$(__rvm_environment_identifier)"
603
- file_name="${rvm_environments_path}/$environment_identifier"
599
+ local file_name="${rvm_environments_path}/$environment_identifier"
604
600
 
605
601
  if [[ ! -s "$file_name" ]] ; then
606
602
  \mkdir -p "${rvm_environments_path}"
607
- echo "export PATH=\"${rvm_ruby_gem_home}/bin:${rvm_ruby_global_gems_path}/bin:${rvm_ruby_home}/bin:${rvm_bin_path}:\$PATH\"" > $file_name
603
+ echo "export PATH=\"${rvm_ruby_gem_home}/bin:${rvm_ruby_global_gems_path}/bin:${rvm_ruby_home}/bin:${rvm_bin_path}:\$PATH\"" > "$file_name"
608
604
  for variable in RUBY_VERSION GEM_HOME GEM_PATH BUNDLE_PATH MY_RUBY_HOME IRBRC rvm_ruby_string rvm_gemset_name MAGLEV_HOME ; do
609
605
  eval "export $variable"
610
- eval value=\$${variable}
606
+ eval "value=\$${variable}"
611
607
  if [[ -n "$value" ]] ; then
612
- printf "${variable}='$value'\nexport ${variable}\n" >> $file_name
608
+ printf "${variable}='$value'\nexport ${variable}\n" >> "$file_name"
613
609
  else
614
- printf "unset ${variable}\n" >> $file_name
610
+ printf "unset ${variable}\n" >> "$file_name"
615
611
  fi
616
612
  done ; unset variable value
617
613
  fi ; unset file_name
@@ -624,7 +620,7 @@ __rvm_ensure_has_environment_files() {
624
620
  directory_name="$rvm_wrappers_path/$wrapper_identifier"
625
621
  if [[ ! -L "$directory_name" && ! -d "$directory_name" ]]; then
626
622
  \mkdir -p "$directory_name"
627
- $rvm_scripts_path/wrapper "$wrapper_identifier" &> /dev/null
623
+ "$rvm_scripts_path/wrapper" "$wrapper_identifier" &> /dev/null
628
624
  fi
629
625
  unset rvm_creating_default_wrappers directory_name
630
626
  done; unset wrapper_identifier
@@ -637,7 +633,7 @@ __rvm_strip() {
637
633
  }
638
634
 
639
635
  __rvm_using_gemset_globalcache() {
640
- $rvm_scripts_path/db "$rvm_config_path/user" "use_gemset_globalcache" | \grep -q '^true$'
636
+ "$rvm_scripts_path/db" "$rvm_config_path/user" "use_gemset_globalcache" | \grep -q '^true$'
641
637
  }
642
638
 
643
639
  __rvm_current_gemcache_dir() {
@@ -656,7 +652,7 @@ __rvm_ultimate_question() {
656
652
  printf "\nI do not know the Ultimate Question, "
657
653
  printf "\nhowever I can help you build a more "
658
654
  printf "\npowerful Ruby which can compute the "
659
- printf "\nUltimate Question."
655
+ printf "\nUltimate Question.\n"
660
656
  }
661
657
 
662
658
  __rvm_load_env_file() {
@@ -684,24 +680,24 @@ __rvm_rvmrc_key() {
684
680
 
685
681
  __rvm_reset_rvmrc_trust() {
686
682
  touch "$rvm_config_path/rvmrcs"
687
- $rvm_scripts_path/db "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "delete" >/dev/null 2>&1
683
+ "$rvm_scripts_path/db" "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "delete" >/dev/null 2>&1
688
684
  }
689
685
 
690
686
  __rvm_trust_rvmrc() {
691
687
  touch "$rvm_config_path/rvmrcs"
692
688
  __rvm_reset_rvmrc_trust "$1"
693
- $rvm_scripts_path/db "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "1" >/dev/null 2>&1
689
+ "$rvm_scripts_path/db" "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "1" >/dev/null 2>&1
694
690
  }
695
691
 
696
692
  __rvm_untrust_rvmrc() {
697
693
  touch "$rvm_config_path/rvmrcs"
698
694
  __rvm_reset_rvmrc_trust "$1"
699
- $rvm_scripts_path/db "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "0" >/dev/null 2>&1
695
+ "$rvm_scripts_path/db" "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")" "0" >/dev/null 2>&1
700
696
  }
701
697
 
702
698
  __rvm_rvmrc_stored_trust() {
703
699
  touch "$rvm_config_path/rvmrcs"
704
- $rvm_scripts_path/db "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")"
700
+ "$rvm_scripts_path/db" "$rvm_config_path/rvmrcs" "$(__rvm_rvmrc_key "$1")"
705
701
  }
706
702
 
707
703
  __rvm_rvmrc_tools() {
@@ -754,26 +750,33 @@ __rvm_check_rvmrc_trustworthiness() {
754
750
 
755
751
  __rvm_ask_to_trust() {
756
752
  [[ -n "$rvm_promptless" ]] && return 2
757
- echo "Changing into a directory with an untrusted .rvmrc"
758
- echo "Do you wish to trust the rvmrc in this directory? It contains:"
759
- echo "---"
760
- echo ""
761
- cat "$1"
762
- echo ""
763
- echo "---"
764
- echo "So, do you wish to trust it? (y for yes, n for no)"
753
+ printf "
754
+ ============================================================
755
+ RVM has encountered a new untrusted .rvmrc file containing:
756
+ ============================================================
757
+
758
+ $(cat $1)
759
+
760
+ ============================================================
761
+ Trusting an .rvmrc file means that whenever you cd into the
762
+ directory RVM will excecute this .rvmrc script in your shell
763
+
764
+ Do you wish to trust this .rvmrc from now on?
765
+ ============================================================
766
+ (y for yes, n for no)"
765
767
  local trusted=""
768
+ # TODO: Eliminate infinite loop possibility.
766
769
  while [[ -z "$trusted" ]] ; do
767
- printf ">> "
768
- read -r value
769
- value="$(echo "$value" | tr '[[:upper:]]' '[[:lower:]]' | __rvm_strip)"
770
- if [[ "$value" = "y"* ]]; then
770
+ printf " > "
771
+ read -r response
772
+ value="$(echo "$response" | tr '[[:upper:]]' '[[:lower:]]' | __rvm_strip)"
773
+ if [[ "$response" = "y"* ]]; then
771
774
  trusted=1
772
- elif [[ "$value" = "n"* ]]; then
775
+ elif [[ "$response" = "n"* ]]; then
773
776
  trusted=0
774
777
  fi
775
- done
776
- unset value
778
+ done ; unset value
779
+
777
780
  if [[ "$trusted" == "1" ]] ; then
778
781
  __rvm_trust_rvmrc "$1"
779
782
  return 0
@@ -857,26 +860,26 @@ __rvm_recorded_install_command() {
857
860
 
858
861
  __rvm_environment_identifier() {
859
862
  ruby_string="$(command -v ruby)"
863
+
860
864
  if [ -n "$ruby_string" ] && echo "$ruby_string" | \grep -q -F "$rvm_rubies_path"; then
861
865
  echo "$GEM_HOME" | xargs basename
862
866
  else
863
867
  echo "system"
864
- fi
865
- unset ruby_string
868
+ fi ; unset ruby_string
866
869
  }
867
870
 
868
871
  __rvm_expand_ruby_string() {
869
872
  if [[ -z "$1" || "$1" = "all" ]]; then
870
- $rvm_scripts_path/list strings | tr ' ' "\n" | __rvm_strip
873
+ "$rvm_scripts_path/list" strings | tr ' ' "\n" | __rvm_strip
871
874
  elif [[ "$1" = "all-gemsets" ]]; then
872
- $rvm_scripts_path/list gemsets strings | __rvm_strip
875
+ "$rvm_scripts_path/list" gemsets strings | __rvm_strip
873
876
  elif [[ "$1" = "default-with-rvmrc" || "$1" = "rvmrc" ]]; then
874
- $rvm_scripts_path/tools path-identifier "$PWD"
877
+ "$rvm_scripts_path/tools" path-identifier "$PWD"
875
878
  elif [[ "$1" == "all-rubies" || "$1" = "rubies" ]]; then
876
- $rvm_scripts_path/list rubies strings | __rvm_strip
879
+ "$rvm_scripts_path/list" rubies strings | __rvm_strip
877
880
  elif [[ "$1" == "current-ruby" || "$1" = "gemsets" ]]; then
878
881
  local current_ruby="$(__rvm_environment_identifier | awk -F"$rvm_gemset_separator" '{print $1}')"
879
- rvm_silence_logging=1 $rvm_scripts_path/gemsets list | sed "s/^/$current_ruby$rvm_gemset_separator/" | __rvm_strip
882
+ rvm_silence_logging=1 "$rvm_scripts_path/gemsets" list | sed "s/^/$current_ruby$rvm_gemset_separator/" | __rvm_strip
880
883
  elif [[ "$1" = "current" ]]; then
881
884
  __rvm_environment_identifier
882
885
  elif [[ "$1" = "aliases" ]]; then