运行 bash 会“segmentation fault core dumped”

use*_*289 5 bash segmentation-fault

我最近重新启动,现在终端无法工作。如果我单击终端快捷方式或使用Guakectrl-alt-T,终端会在没有提示的情况下短暂打开,然后立即再次关闭。我也安装xterm了,同样的事情发生了。

如果我ctrl-alt-F1用来进入命令行会话并键入,gnome-terminal我会收到错误消息:

Failed to parse arguments: Cannot open display
Run Code Online (Sandbox Code Playgroud)

我该如何诊断和解决这个问题?

编辑添加 .bashrc

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile"

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

### Added by the Heroku Toolbelt
export PATH="/usr/local/heroku/bin:$PATH"
alias zf=/home/julio/ZendFramework-1.12.3/bin/zf.sh
Run Code Online (Sandbox Code Playgroud)

编辑 2-- 添加.profile

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

export SCALA_HOME=/usr/share/scala
export PATH=$PATH:$SCALA_HOME/bin
source ~/.profile
Run Code Online (Sandbox Code Playgroud)

ter*_*don 8

这与 无关gnome-terminal,当您点击Ctrl Alt F1,从虚拟控制台登录并尝试运行时bash,您得到了segmentation fault core dumped,这意味着它bash本身崩溃了。

无论如何,发生的事情是你的 bash 进入了一个无限循环。当bash第一次启动时,它读取~/.bashrc(实际上,这是一种简化,见此处了解详情)。在您的情况下(以及大多数(如果不是所有)Ubuntu 版本),由于.bashrc我从未清楚的原因,默认值也是来源(阅读)~/.profile。现在,您~/.profile包括这一行:

source ~/.profile
Run Code Online (Sandbox Code Playgroud)

其结果是bash读取~/.bashrc=> 读取~/.profile=> 读取~/.profile=> 读取~/.profile=> 读取~/.profile等。这称为无限循环。最终,它吓坏了并崩溃了。

source ~/.profile从您的线路中删除~/.profile应该使一切恢复正常。