Pys*_*sis 24 shell fish rvm macos
我正在使用 OS X El Capitan (10.11.3) 的 MacBook 上使用 Ruby 2.x 和 Rails 4.x,使用鱼壳,采用此页面上列出的集成:RVM -鱼壳(集成)
当执行各种命令如rvm version,rvm install ...,rvm use ...,rvm --default ...等,收到以下错误消息:
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found
Run Code Online (Sandbox Code Playgroud)
快速 Google 搜索不会返回任何可以帮助我识别和/或解决问题的相关结果,因为它已经解决了我的许多其他开发设置问题。
我在rvm.fish函数文件中、.config/fish目录下以及$HOME/.rvm/bin/rvm主可执行文件中进行了快速文本搜索,但没有看到诸如shell_session_update在该文件中直接调用之类的命令。
有谁知道为什么会这样,我该如何解决?我是一个喜欢修复我面前的东西的人,所以只有我需要采取行动的东西出现在我面前,所以我想删除这个错误/警告信息。:)
PS 我试图安装和使用的特定 Ruby 版本 (2.0.0) 似乎运行正常,即使在同一个终端 (iTerm(2)) 会话中,无需重新启动它。我已经关闭了那个并创建了一个新的终端会话,并且在运行上述各种命令时仍然看到该消息出现。
Pys*_*sis 41
TL;DR:通过重新安装或发出命令确保 RVM 至少更新到 1.26.11 rvm get head,并且每个终端环境仅初始化一次。
最终我能够修复我的环境。我会发布一些与我的具体问题有关的信息,以帮助一些人,即使其他人可能有相同的症状但另一个根本原因。
根本问题的一部分来自 RVM,以及它是如何为我的命令行环境初始化的。我找到了几种不同的方法来做到这一点,特别是因为有一种额外的方法是专门为fishshell 环境设计的。
似乎根本原因是:
fish,正在我的另一个终端环境中运行,bash反之亦然。这可以在我下面的详细信息中看到,其中损坏的bashPATH 有一些由:s分隔的路径,但其他路径也包含在空格中,这对于 来说是不正确的语法bash,但对于fish.然后根本问题的另一部分是,最近似乎出现了一个关于陷阱功能的 RVM/direnv 相关错误。我可能再次遇到了这个问题,因为它可能是由以下原因引起的其他有问题的 RVM 版本之一:
curl -sSL https://get.rvm.io | bashrvm get headrvm_autoupdate_flag=2到自动更新(我刚刚完成)~/.rvmrc这个问题应该在 2016 年 3 月 30 日或发布 1.26.11 得到修复:
在使用 GNU 实用程序对文件系统进行完整搜索,查看文件内容后,我使用 Atom 进行了更成功的操作,并发现在 Zanchey 提到shell_session_update的/etc/bashrc_Apple_Terminal文件中找到了唯一的出现(历史文件除外)诸如此类)。我也不确定为什么要运行它,因为我使用的是 iTerm(2),并且$TERM_PROGRAM在这种情况下的值是iTerm.app而不是Apple_Terminal。
出于某种原因,我不得不多次管理 RVM 安装,并完成安装过程,这也无济于事,这显然已经将配置添加到几个“点文件”中,我还手动添加了一些或行.
与此同时,我在 Mac 上创建了一个.bashrc文件并链接到它.bash_profile,因为它显然默认不存在。我以前读过一个 Linux 系统,按照惯例,.bash_profile它适用于某些自定义,.bashrc也适用于其他自定义,例如定义用户别名和函数,反之亦然。所以我不习惯查看.bash_profile文件内部,尤其是不.profile查看文件,所有文件都在用户目录中,类似的系统也复制。我们也不要忘记 a path_helperis in the mix(!),但似乎没有造成任何问题。
设置环境的可能方法(可能正确与否)如下:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"export PATH="$PATH:$HOME/.rvm/bin"(作为在将PATH控制权交给用户之前修改变量的最后一行。rvm default(也需要是最后一个PATH修改行。来自:StackOverflow - 在执行 rvm use 2.0.0 --default 时获取“警告!路径设置不正确”)对于更令人难以置信的冗长,以下是我在调试问题时在不同环境之间捕获的一些示例路径:
原始(破碎)鱼路径
/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin /Users/username/.rvm/rubies/ ruby-2.0.0-p648/bin /Users/username/.rvm/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/munki /Users/username/.rvm/垃圾桶
“自然”更好的鱼路径
/usr/local/opt/coreutils/libexec/gnubin /usr/local/opt/findutils/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/munki
原始(损坏的)bash PATH
/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin /Users /username/.rvm/rubies/ruby-2.0.0-p648/bin /Users/username/.rvm/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/munki :/用户/用户名/.rvm/bin
“手动”修复了 bash PATH
/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin: /Users/username/.rvm/rubies/ruby-2.0.0-p648/bin:/Users/username/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin: /sbin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin
“自然”更好的 bash PATH
/usr/local/opt/coreutils/libexec/gnubin:/usr/local/opt/findutils/bin:/usr/local/opt/coreutils/libexec/gnubin:/usr/local/opt/findutils/bin:/usr /local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/munki
笔记:
.bashrc等等),然后在问题解决后最终让它们运行时开始的。我也有同样的问题。后来我发现rvm repo中已经存在这个问题。他们已经在其中一个拉取请求中修复了它。
要解决此问题,请将 rvm 升级到最新版本或将其指向当前的开发版本。
rvm get head
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅此帖子。