为什么我的 bash 终端无法识别 shell 中的任何命令?

为什么我的 bash 终端无法识别 shell 中的任何命令?

根据一些用户的请求,我决定将所有中间步骤和结果添加到我的初始帖子中,以便用户可以更好地引导我完成解决方案。这是在标题下添加的补充内容在问题下方。以下补充,有一个部分称为,“解决,”我添加了为解决此问题而采取的额外步骤:

问题:

今天,当我尝试继续在命令行 shell 中运行代码时,我注意到 Fedora 21 中的 shell 实际上没有识别任何命令(i686 上的内核 4.1.13-100.fc21.i686(tty2) ))。我想如果我重新启动并重新引导系统,问题应该会解决。然而,令我惊讶的是,我注意到登录后系统没有启动。我尝试在屏幕变黑时按 CTRL+ALT+F2 进行诊断,以查看它实际上在哪里停止工作。我看到的最后一行完全停止了:

等待普利茅斯启动屏幕退出

当 shell 中的诊断模式实际上不接受任何命令时,您介意让我知道如何通过以下方式解决此问题吗?

-bash: <...>: 未找到命令

我唯一能想到的是一些我不知道或弄乱我的 .bashrc 的可能的自动更新(通过使用以下命令我无法再在其中看到它:)

sudo gedit ~/.bashrc


补充:

只有在按进入诊断模式后我才能登录到我的系统Ctrl+Alt+F2 就在之后重新启动并登录主启动,在正常情况下会失败。


i686 (tty2) 上的Fedora 版本 21(二十一)内核 4.1.13-100.fc21.i686+PAEdebug

在此模式下,会出现登录提示

本地主机登录:

输入我的用户名后,它会显示:

密码:

输入我的密码后,它会显示:

上次登录: 3 月 30 日星期三 15:33:54 在 tty2 上

[bbenjamin@localhost ~]$

无论如何,这里的命令都不会被 shell 识别。错误信息通常是:

-bash: <...>: 未找到命令

其中 <...> 基本上是任何命令。我唯一一次成功地让 shell 实现大多数命令是当我运行以下代码时(如答案中所述):

PATH=/usr/bin:/usr/sbin

之后至少我可以查找并查看我的文件、文件夹和程序(因为大多数命令都已实现。)

然而,我仍然需要正常登录,以便我可以使用 Fedora 的所有图形和其他功能,这在诊断模式下是不可能的。为了实现这一点,我特别需要打开 .bashrc 文件并永久修复其问题(假设我可以以某种方式访问​​其原始版本。)为此,我需要运行如下命令

(sudo) gedit ~/.bashrc

但是,我收到如下错误消息:

无法初始化服务器:无法连接:连接被拒绝

(gedit:1397):Gtk-警告**:无法打开显示:

或者运行这样的命令:

~/.bash_profile

这会产生错误消息:

bash:/home/bbenjamin/.bash_profile:权限被拒绝。

现在,从答案中得知,我不应该运行后一个命令,因为它不可执行。相反,我应该以以下格式运行它:

source ~/.bashrc

之后我不知道如何继续。

但是,我也不知道为什么前一个命令(sudo) gedit ~/.bashrc不起作用。我记得我总是根据需要对 .bashrc 文件进行一些细微的更改。这次我不知道我是如何对其进行更改的,它导致了此处解释的所有问题。所以现在,我的问题是是否有一个基于命令行的方法,我可以打开 .bashrc 并查看其中并进行所需的更改永久因此,我的系统登录会适当地引导我进入正常的图形模式,在该模式中我可以看到并使用所有 Fedora 功能。


解决

我了解到,一旦我进入诊断登录失败后立即通过命令模式Ctrl+Alt+F2,我可以暂时修复混乱的文件.bashrc通过运行命令PATH=/usr/bin:/usr/sbin。然后我可以看看我的内心.bahsrc通过运行命令行来创建文件cat .bashrc。直到那时我才看到文件的内容,其中我在文件中添加了多个路径。由于我按照时间顺序将添加的文件记录在先前路径的底部,因此我知道有问题的路径是最后一个路径。现在,为了解决这个问题,我必须实际修改该文件。这是通过命令行实现的,nano .bashrc之后出现一个新页面,在其中我有机会通过添加注释掉有问题的行#在它的前面。最后,我保存了更改并退出。我必须做的最后一步是使用新修改后的系统重新启动.bashrc通过命令行输入文件telinit 6,之后日志记录被证明是成功的。

答案1

听起来你在你的文件中放入了一些东西~/.bashrc,导致PATH其设置方式不包括/usr/bin,而这是大多数程序实际存在的地方。如果你运行这个:

PATH=/usr/bin:/usr/sbin

大多数命令应该开始工作 - 然后您可以编辑~/.bashrc和修复PATH在那里重置的任何内容。 (而且,实际上 - 你想设置PATH~/.bash_profile不是~/.bashrc- 参见如何正确添加路径到PATH?

(顺便说一下,请注意,任何 Fedora 更新都不会扰乱这一点,因为更新不会更改主目录中的文件。有时,当您运行更新的软件时,该软件可能会更新其自己的配置文件,但这不适用于〜/.bashrc。)


在您的编辑中:gedit文本编辑器仅在图形模式下工作。在文本模式下,您需要一个基于文本的编辑器。其中最简单的可能是nano.安装它

dnf安装纳米

然后使用nanoif 代替gedit。实际的编辑功能会略有不同,但非常简单。

相关内容