如何在没有终端访问的情况下重置 $PATH?

如何在没有终端访问的情况下重置 $PATH?

我在 CentOS 6.6 VM 上安装 cpanm,并尝试更改 $PATH 以便可以运行它。

然而,不是打字,

echo 'export PATH="$HOME/perl5/bin:$PATH"' >> ~/.bash_profile

我输入了

echo 'export PATH="$HOME/perl5/bin:%PATH"' >> ~/.bash_profile

我似乎已经覆盖了 $PATH,因为我可以运行 cpanm,但不能运行其他任何东西。没有 cat,没有 vim,也没有非内置命令。

我在某处读到重新启动会重置 $PATH 所以我尝试了。当我尝试登录 GNOME 登录页面时,操作系统立即重新启动并返回到登录页面。所以我什至无法访问终端来更改设置。

发生了什么事以及如何解决这种情况?

答案1

如您所知,该$PATH变量告诉 shell 应在哪些目录中搜索您输入的任何(非内置)命令。这样,您不必/usr/bin/vim每次都键入(→ 方便),并且第三方脚本可以直接运行,bash而无需知道您的特定 Linux/UNIX 发行版是否将其放在/bin/bash/usr/bin/bash或其他地方(→ 互操作性)。

当您想要运行不在您的 中的东西时$PATH,只需为您的 shell 提供程序的完整路径,例如/usr/bin/vim


至于 GNOME 拒绝启动:只需切换到基于文本的控制台(例如Ctrl+ Alt+ F2),使用正常的用户名和密码登录,然后/usr/bin/vim ~/.bash_profile从那里登录。

哦,我可能应该提到如何从那里返回......
您的图形登录管理器通常会在 上运行tty7,您可以使用Ctrl+ Alt+切换到它F7

答案2

正如 n.st 已经解释了如何修复 $PATH 变量,我将告诉您如何恢复 shell 访问权限(与 grub 一起使用):

  1. 重新启动您的机器。在 grub 提示符下,选择您的 linux 发行版,然后按“e”(在输入位置表示“编辑”。这将带您进入基本编辑器。

  2. 转到以“linux /boot/...”开头的行,并附加“init=/bin/bash”(不带引号)。然后按F10(或者据说是启动键,我不记得具体是哪一个了)。

  3. 在启用 root 的情况下,您的发行版将在不到一秒的时间内直接启动到 bash。然后,您可以将 $PATH 变量重新导出到 bash_profile 文件(如果您不太清楚,请在 Internet 上查找示例)。

完成后,您可以正常重新启动(您不需要删除“init”,这应该已经自动完成)。

相关内容