Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I use Pik for Ruby in Git Bash on Windows?

I'm running multiple versions of Ruby (and Rails) on Windows and use Pik to switch between them. At the command line, I'm able to call

> pik list
186: ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
192: ruby 1.9.2p0 (2010-08-18) [i386-mingw32]

to get a list of ruby versions available, and use

> pik 192

> ruby -v
ruby 1.9.2p0 (2010-08-18) [i386-mingw32]

to make ruby 1.9.2 the active version:

I am not able to do the same in git bash:

 $ pik list
 sh.exe": pik: command not found

and the version of ruby is still 1.8.6

$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

It seems like git bash can't see the path to pik. Is there a way to alter the path within git bash or is there another way to run pik in git bash?

like image 852
y0mbo Avatar asked Oct 26 '10 04:10

y0mbo


2 Answers

The last answer is correct as far as it goes. However, on Windows systems the $USERPROFILE environment variable is set to something like: C:\Documents and Settings\username.

The spaces in the path cause the command to be interpreted improperly. This is better:

[[ -s "$USERPROFILE/.pik/.pikrc" ]] && source "$USERPROFILE/.pik/.pikrc"

Note the quotes around the paths in the code snippet above.

Additionally, your .bashrc file (or .bash_profile file) should be located within the directory specified by the USERPROFILE environment variable, e.g. - C:\Documents and Settings\username.

like image 152
David Keener Avatar answered Nov 01 '22 22:11

David Keener


I had to edit .bash_profile and .pikrc

.bash_profile:

[[ -s "$USERPROFILE/.pik/.pikrc" ]] && source "$USERPROFILE/.pik/.pikrc"

.pikrc

#!/bin/sh
pik_path="/c/Program Files/pik"

function pik  {
  "$pik_path/pik_runner.exe" pik.sh $@
  [[ -s "$USERPROFILE/.pik/pik.sh" ]] && source "$USERPROFILE/.pik/pik.sh"
} 

Having quotes around the paths is only necessary if you have spaces in the path (like "Program Files").

like image 29
Lieven Cardoen Avatar answered Nov 01 '22 21:11

Lieven Cardoen