Mac Terminal 重新启动后无法运行大多数命令

Posted

技术标签:

【中文标题】Mac Terminal 重新启动后无法运行大多数命令【英文标题】:Mac Terminal can't run most commands after restarting it 【发布时间】:2019-05-09 02:44:27 【问题描述】:

我正在使用 Mac。我有一个定制的终端zsh,用了一段时间就好了。但是在我重新启动计算机后,它的行为开始有所不同:

终端停止运行rakerails等命令。

我已经使用 rails 创建了应用程序,但是使用像 rails -v 这样的 rails 命令现在给了我这个:

Rails is not currently installed on this system. To get the latest version, simply type:

终端用于显示波浪号 ~ 而不是我的用户名,并且该终端也已停止。它现在显示完整的用户名:

Gustaves-MacBook-Air% $ sudo gem install rails

我不知道为什么它不起作用,为什么重新启动计算机会破坏它,即使我以前做过。

我什至无法重新下载 rails:

$ sudo gem install rails
zsh: command not found: $

因为我很久以前就通过在线设置自定义了我的终端。

【问题讨论】:

嗨。您可以尝试运行echo $0echo $PATH 并分享输出吗? echo $0 : /bin/zsh echo $PATH :/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/用户/gustavevilsboe/.rbenv/shims:/Users/gustavevilsboe/.rbenv/bin 我看到你正在使用 rbenv。您是否也安装了多个版本的 Ruby? 问题根源找到了。你的 ~/.zshrc 不知何故被破坏了。您可以复制/重命名该交换文件,或使用 vim 恢复它(参见说明 here)或获取 the default one from the oh my zshell project。 你可以简单地删除 ~/.oh-my-zsh (rm -rf ~/.oh-my-zsh) 和 rm ~/.zshrc (这都是文本文件,基本上,你的 zsh 安装不会被触及)。之后我会打开一个新的终端窗口并再次run the install script。如果找不到可执行文件,例如git,则运行which git 来查找它。 【参考方案1】:

这是我通过其他人的帮助解决此问题的方法:

首先我使用

删除了损坏的文件
rm -rf ~/.oh-my-zsh
rm ~/.zshrc

然后我运行以下命令重新下载zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

最后,我用文本编辑器打开隐藏的 .zshrc 文件来添加我需要的插件

plugins=(
  git
  bundler
  dotenv
  osx
  rake
  rbenv
  ruby
)

重启终端后一切正常

【讨论】:

【参考方案2】:

尝试重置zsh:

exec /bin/zsh

exec /usr/bin/zsh

【讨论】:

这里是 echo $PATH 的结果:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/ gustavevilsboe/.rbenv/shims:/Users/gustavevilsboe/.rbenv/bin 嗨,Antranig。请使用 cmets 提问和回答工具来为您提供问题的解决方案。 @iain 不知道如何写评论。我使用 android“堆栈交换” 没问题,很容易做到。很高兴你能在这里做出贡献! :)【参考方案3】:

我相信您所在目录的 Ruby 环境没有正确加载(因此缺少 Rails)。您的 ZSH 环境似乎也没有正确加载(缺少的 ~ 是一个线索)。为什么会这样,我不能确定,但​​我会在此期间添加一些您可以做的事情来提供帮助。

将 Bundler 与 binstubs 和路径一起使用

我通过使用以下命令将所有 gem 安装到项目目录中来沙箱化我的项目:

bundle install --binstubs --path=vendor.noindex

这会将rails 之类的东西放入binvendor.noindex 下的宝石。 “noindex”部分阻止 Spotlight 索引该目录,这对我来说真的很烦人!

确保 ZSH 是您的默认 shell

这个命令是:

chsh -s $(which zsh)

查看当前默认运行的是什么echo $0

检查你的 ~/.zshrc 是否正常

如果您的提示看起来不正确,则可能是文件状态不佳或未正确加载。查看Oh My Zshell 的说明。

检查你的 PATH 没有被破坏

您的PATH 看起来好像缺少前面,因为它以冒号开头。检查您添加的所有 zsh 插件是否正常工作(可能将它们全部删除并一一添加)。

我也使用 ~/.zshenv 和 helper to get paths set up correctly,也许它会帮助你。我将它添加到我的 ~/.zshenv 中。

if [ -x /usr/local/libexec/path_helper.rb ]; then
  PATH=$(/usr/local/libexec/path_helper.rb -p "")
  DYLD_FALLBACK_FRAMEWORK_PATH=$(/usr/local/libexec/path_helper.rb --dyld "")
  C_INCLUDE_PATH=$(/usr/local/libexec/path_helper.rb -c "")
  MANPATH=$(/usr/local/libexec/path_helper.rb -m "")
fi
export PATH
export DYLD_FALLBACK_FRAMEWORK_PATH
export C_INCLUDE_PATH
export MANPATH

希望对您有所帮助。

【讨论】:

以上是关于Mac Terminal 重新启动后无法运行大多数命令的主要内容,如果未能解决你的问题,请参考以下文章

无法启动Terminal Services 错误码1058?

mac中启动jmeter方法

在 本地计算机 无法启动 Terminal Servicse 服务 错误 126 找不到指定模块

Mac的Terminal中无法使用mvim解决方案

怎样在windows下制作mac的u盘启动盘

Keycloak Docker 容器重启后无法启动