TL; DR:通过重新安装或发出命令确保RVM至少为1.26.11 rvm get head
,并且在每个终端环境中仅初始化一次。
结果
最终,我得以修复我的环境。我将发布一些与我的特定问题有关的信息,以帮助某些人,即使其他人可能具有相同症状但又是另一个根本原因。
原因
根本问题的一部分来自RVM,以及如何针对我的命令行环境对其进行初始化。我发现了几种不同的方法来执行此操作,特别是因为针对fish
外壳环境专门设计了一种额外的方法。
似乎根本原因是:
- 多次初始化RVM,因为我有多个语句,每个终端配置文件一个,并且由于它们如何链接,我不知道其他语句是自动添加的。
- 或者,以某种方式添加了一些语句,这些语句混合了一个终端环境的初始化,例如
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进行了更多成功,发现只有Zanchey提到shell_session_update
的/etc/bashrc_Apple_Terminal
文件中才出现(除了历史文件之外)等)。我也不确定为什么要运行它,因为我正在使用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(!)中有一个,但是似乎并没有造成任何问题。
正确或错误的环境设置方法如下:
更多细节
对于更令人难以置信的冗长,下面是一些我在调试问题时由不同环境捕获的示例路径:
原始(断)鱼路径
/ 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
等等),然后在解决问题后最终使它们运行的过程。
shell_session_update
是OS X在中安装的Bash函数/etc/bashrc_Apple_Terminal
,因此大概是RVM运行的Bash命令中的某些内容将其作为输出生成。