【问题标题】:How can I use Pik for Ruby in Git Bash on Windows?如何在 Windows 上的 Git Bash 中使用 Pik for Ruby?
【发布时间】:2011-04-30 13:20:46
【问题描述】:

我在 Windows 上运行多个版本的 Ruby(和 Rails)并使用 Pik 在它们之间切换。在命令行,我可以调用

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

获取可用的 ruby​​ 版本列表,并使用

> pik 192

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

使 ruby​​ 1.9.2 成为活动版本:

我无法在 git bash 中做同样的事情:

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

而ruby的版本还是1.8.6

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

似乎 git bash 看不到 pik 的路径。有没有办法改变 git bash 中的路径,或者有另一种方法可以在 git bash 中运行 pik?

【问题讨论】:

  • git下可以运行echo $PATH,windows下可以运行PATH吗?另外,你能运行gem env吗?
  • Yes to echo $PATH 和 Yes to gem env.
  • 好的,让我换个说法。运行这些命令,并将它们的输出添加到您的问题中(减去您认为私有的任何内容)。

标签: ruby windows git git-bash pik


【解决方案1】:

请确保您已安装最新版本的 Pik (0.2.8)。在 Git Bash 下打开您的用户配置文件 .bash_profile 或类似文件,并确保其中包含以下代码:

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

从那里您应该能够从 Git Bash 终端调用 pik。

希望有帮助

【讨论】:

  • source $USERPROFILE/.pik/.pikrc 周围没有引号给我带来了麻烦。所以"source $USERPROFILE/.pik/.pikrc" 修复了这些...
【解决方案2】:

就目前而言,最后一个答案是正确的。但是,在 Windows 系统上,$USERPROFILE 环境变量设置为:C:\Documents and Settings\username。

路径中的空格会导致命令被错误解释。这样更好:

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

注意上面代码 sn-p 中路径周围的引号。

此外,您的 .bashrc 文件(或 .bash_profile 文件)应位于 USERPROFILE 环境变量指定的目录中,例如- C:\Documents and Settings\用户名。

【讨论】:

  • 另外,如果您将 Pik 安装在不同的驱动器上(例如 D:),您还需要编辑位于用户配置文件下 .pik 文件夹下的 .pikrc 文件,以便 pik_path 指向右侧驾驶。例如:pik_path=d:/pik
  • 另外,如果您使用 Windows 安装程序单独安装 1.9.2,您将需要编辑 .pik/config.yml 并添加指向 1.9.2 gem home 的 gem_home 设置::gem_home: !ruby/object:Pathname 路径:c:/Ruby192/lib/ruby/gems/1.9.1
  • 好的,所以我最终为所需的 3 个关键更改创建了一个 Gist:gist.github.com/1239600
【解决方案3】:

我必须编辑 .bash_profile 和 .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"
} 

仅当路径中有空格(如“程序文件”)时,才需要在路径周围加上引号。

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 2021-05-28
    • 2016-05-12
    • 2018-02-14
    • 2013-03-23
    • 2012-11-20
    • 1970-01-01
    • 2015-11-17
    相关资源
    最近更新 更多