Mac Terminal 重新启动后无法运行大多数命令
Posted
技术标签:
【中文标题】Mac Terminal 重新启动后无法运行大多数命令【英文标题】:Mac Terminal can't run most commands after restarting it 【发布时间】:2019-05-09 02:44:27 【问题描述】:我正在使用 Mac。我有一个定制的终端zsh
,用了一段时间就好了。但是在我重新启动计算机后,它的行为开始有所不同:
rake
或rails
等命令。
我已经使用 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 $0
和echo $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
之类的东西放入bin
和vendor.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?