我正在使用OS X El Capitan(10.11.3)在MacBook上使用Ruby 2.x和Rails 4.x,使用鱼壳,并使用此页面上列出的集成功能:RVM-Fish Shell(集成)
当执行各种命令如rvm version
,rvm install ...
,rvm use ...
,rvm --default ...
等,收到以下错误消息:
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found
与其他许多开发设置问题一样,Google快速搜索不会返回任何相关的结果来帮助我识别和/或解决问题。
我在rvm.fish
功能文件,.config/fish
目录下以及$HOME/.rvm/bin/rvm
主可执行文件中进行了快速文本搜索,但没有看到诸如shell_session_update
直接在该文件中调用的命令。
有谁知道为什么会这样,我该如何解决?我是一个喜欢将东西固定在我眼前的人,因此只有我需要采取行动的东西才会出现在我眼前,因此我想删除此错误/警告消息。:)
PS我尝试安装和使用的特定Ruby版本(2.0.0)似乎可以正常运行,即使在同一终端(iTerm(2))会话中,也无需重新启动它。从那以后,我已经关闭了那个并创建了一个新的终端会话,并且在运行上述各种命令时仍然看到该消息。
TL; DR:通过重新安装或发出命令确保RVM至少为1.26.11 rvm get head
,并且在每个终端环境中仅初始化一次。
最终,我得以修复我的环境。我将发布一些与我的特定问题有关的信息,以帮助某些人,即使其他人可能具有相同的症状但又是另一个根本原因。
根本问题的一部分来自RVM,以及如何针对我的命令行环境对其进行初始化。我发现了几种不同的方法来执行此操作,特别是因为针对fish
外壳环境专门设计了一种额外的方法。
似乎根本原因是:
fish
,并在我的另一个终端环境中运行,bash
反之亦然。可以在下面的详细信息中看到,其中损坏的bash
PATH的某些路径用:
s分隔,但其他路径也用空格分隔,这是的语法错误bash
,但正确的fish
。然后,根本问题的另一部分是,似乎最近有一个与RVM / direnv相关的错误爬上了有关陷阱功能的漏洞。我可能遇到了RVM的另一个有问题的发行版,这可能是由以下原因引起的:
curl -sSL https://get.rvm.io | bash
rvm get head
rvm_autoupdate_flag=2
到自动更新(我刚刚完成的更新)~/.rvmrc
此问题应于2016年3月30日或版本1.26.11修复:
在与GNU实用程序进行了全面的文件系统搜索,窥视文件内容之后,我使用Atom进行了此操作,从而获得更大的成功,并发现唯一出现的shell_session_update
是/etc/bashrc_Apple_Terminal
Zanchey提到的文件(除历史文件外)等)。我也不确定为什么要运行它,因为我使用的是iTerm(2),$TERM_PROGRAM
在这种情况下,value是iTerm.app
and not Apple_Terminal
。
由于某种原因,我不得不多次管理RVM安装,这贯穿了整个安装过程,这显然没有帮助我配置配置,显然已经将配置添加到了多个“点文件”中,在这里我还手动添加了一些或以下代码行。
与此同时,我已经在Mac上制作了一个.bashrc
文件并将其链接到该文件.bash_profile
,因为默认情况下该文件显然不存在。以前,我曾在Linux系统上阅读过,按照惯例,.bash_profile
它适用于某些定制,而.bashrc
适用于其他定制,例如定义用户别名和函数,反之亦然。因此,我不习惯在用户目录(.bash_profile
尤其是.profile
类似系统也要复制)的所有目录中查找文件(尤其是文件)。我们也不要忘记path_helper
在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时获取“警告!PATH设置不正确”)为了获得更令人难以置信的冗长,下面是一些在调试问题时我在不同环境之间捕获的示例路径:
原始(断)鱼路径
/ Users /用户名/.rvm/gems/ruby-2.0.0-p648/bin / Users /用户名/.rvm/gems/ruby-2.0.0-p648@global/bin / Users /用户名/.rvm/rubies/ ruby-2.0.0-p648 / bin /用户/用户名/.rvm/bin/usr/local/bin/usr/bin/bin/usr/sbin/sbin/usr/local/munki/用户/用户名/.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路径
/ libexec / gnubin:/ bin:/用户/用户名/.rvm/gems/ruby-2.0.0-p648/bin /用户/用户名/.rvm/gems/ruby-2.0.0-p648@global/bin /用户/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路径
/ libexec / gnubin:/ bin:/用户/用户名/.rvm/gems/ruby-2.0.0-p648/bin:/用户/用户名/.rvm/gems/ruby-2.0.0-p648@global/bin: /用户/用户名/.rvm/rubies/ruby-2.0.0-p648/bin:/用户/用户名/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin: / sbin:/ usr / local / munki:/ Users /用户名/.rvm/bin:/Users/用户名/.rvm/bin
自然地更好的bash路径
/ usr / local / opt / coreutils / libexec / gnubin:/ usr / local / opt / findutils / bin:/ usr / local / opt / coreutils / libexec / gnubin:/ usr / local / opt / findutils / bin:/ usr /本地/ bin:/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / munki
笔记:
.bashrc
等等),然后在解决问题后最终使它们运行的过程。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句