为什么我有/如何解决此错误:“ shell_session_update:找不到命令”


24

背景

我正在使用OS X El Capitan(10.11.3)在MacBook上使用Fish Shell并在此页面上列出的集成中使用Ruby 2.x和Rails 4.x:RVM-Fish Shell(集成)

问题

当执行各种命令如rvm versionrvm 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))会话中,也无需重新启动它。从那以后,我已经关闭了那个并创建了一个新的终端会话,并且在运行上述各种命令时仍然看到该消息。


shell_session_update是OS X在中安装的Bash函数/etc/bashrc_Apple_Terminal,因此大概是RVM运行的Bash命令中的某些内容将其作为输出生成。
Zanchey '16

Answers:


41

TL; DR:通过重新安装或发出命令确保RVM至少为1.26.11 rvm get head,并且在每个终端环境中仅初始化一次。

结果

最终,我得以修复我的环境。我将发布一些与我的特定问题有关的信息,以帮助某些人,即使其他人可能具有相同症状但又是另一个根本原因。

原因

根本问题的一部分来自RVM,以及如何针对我的命令行环境对其进行初始化。我发现了几种不同的方法来执行此操作,特别是因为针对fish外壳环境专门设计了一种额外的方法。

似乎根本原因是:

  • 多次初始化RVM,因为我有多个语句,每个终端配置文件一个,并且由于它们如何链接,我不知道其他语句是自动添加的。
  • 或者,以某种方式添加了一些语句,这些语句混合了一个终端环境的初始化,例如fish,并在我的另一个终端环境中运行,bash反之亦然。可以在下面的详细信息中看到,其中损坏的bashPATH的某些路径用: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进行了更多成功,发现只有Zanchey提到shell_session_update/etc/bashrc_Apple_Terminal文件中才出现(除了历史文件之外)等)。我也不确定为什么要运行它,因为我正在使用iTerm(2),$TERM_PROGRAM在这种情况下,value 是iTerm.appand not Apple_Terminal

由于某种原因,我不得不多次管理RVM安装,这在整个安装过程中并没有帮助,这显然已经将配置添加到了多个“点文件”中,在这里我还手动添加了一些或以下几行。

除此之外,我已经在Mac上制作了一个.bashrc文件并将其链接到该文件.bash_profile,因为默认情况下该文件显然不存在。以前,我曾在Linux系统上阅读过,按照惯例,.bash_profile它适用于某些定制,而.bashrc适用于其他定制,例如定义用户别名和函数,反之亦然。因此,我不习惯在用户目录(.bash_profile尤其是.profile类似系统也要复制)的用户目录中查找文件,尤其是文件。我们也不要忘记path_helpermix(!)中有一个,但是似乎并没有造成任何问题。

正确或错误的环境设置方法如下:

更多细节

对于更令人难以置信的冗长,下面是一些我在调试问题时由不同环境捕获的示例路径:

原始(断)鱼路径

/ 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:/用户/用户名/.rvm/bin:/用户/用户名/.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等等),然后在解决问题后最终使它们运行的​​过程。

rvm get head然后rvm reinstall {version}每个版本最终都为我修复了
TomFuertes

1
如果使用curl安装方法:curl -sSL https://get.rvm.io | bash -s head --ruby
rynop

这个答案是金。有用和彻底。
2016年

安装bash-git-prompt后,我遇到了这个“问题”。重新安装rvm似乎太难了。所以我刚搬到我<rvm sourcing line>的末尾.bash_profile。固定。
公元

我通常发现可以解决此处引用的其他错误消息:stackoverflow.com/questions/18276701/… “警告!PATH的设置不正确”,也许您在其他地方有采购线,这使其与该问题更加相似?那完全没有道理,但是一切皆有可能。
Pysis

5

我也有同样的问题。后来,我发现rvm回购中已经存在此问题。他们已在拉取请求之一中修复了该问题。

要解决此问题,请将rvm升级到最新版本或将其指向当前的开发版本。

rvm get head

有关更多详细信息,请参阅此文章


1
您能否引用链接中的相关部分?否则,看起来您正在尝试推广自己的博客。
Burgi 2016年

这在travis中不起作用,请参见github.com/travis-ci/travis-ci/issues/9511
timotheecour 18-4-17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.