在 bashrc 中添加了一行,现在 bash 没有响应

在 bashrc 中添加了一行,现在 bash 没有响应

我在我的 (这是在 Linode 框上) 末尾添加了以下行~/.bashrc,然后退出我的 ssh 会话。

source ~/.profile

现在当我登录时,shell 没有响应。我从未进入提示符,输入命令也没有任何反应。

如果我按 Ctrl-c,它会关闭 ssh 连接。按 Ctrl-z 也不会有任何反应。我无法访问以~/.profile尝试查看问题所在。

我怎样才能找回提示?

答案1

要取回你的 shell,只需按照以下步骤操作。

希望你还记得 .bashrc 中之前的内容。它应该是这样的:

# .bashrc

# Source global definitions
    if [ -f /etc/bashrc ]; then
        . /etc/bashrc
    fi

将它们放入您可以访问 Linode 机器的机器上的同名文件 .bashrc 中。

现在使用此命令:

 # scp .bashrc server:.

这会用默认的 .bashrc 替换您修改过的 .bashrc,然后您就能恢复您的 shell。

如果您遇到任何问题,请告诉我。

答案2

人们已经问过你如何解决这个问题。但是为什么这会发生在你身上呢?

在 Debian/Ubuntu 中,有这样一段代码~/.profile

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

因此,默认情况下,~/.profile包括~/.bashrc。如果您指定~/.bashrc包括~/.profile,则会创建一个无限循环。

相关内容