简体   繁体   中英

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?

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, eg - C:\\Documents and Settings\\username.

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").

Please ensure you have the latest version of Pik installed (0.2.8), with it. open your user profile .bash_profile or similar under Git Bash and ensure it contains the following code:

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

From there you should be able to invoke pik from the Git Bash terminal.

Hope that helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM