![如何在没有终端访问的情况下重置 $PATH?](https://linux22.com/image/96614/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E7%BB%88%E7%AB%AF%E8%AE%BF%E9%97%AE%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E9%87%8D%E7%BD%AE%20%24PATH%EF%BC%9F.png)
我在 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 一起使用):
重新启动您的机器。在 grub 提示符下,选择您的 linux 发行版,然后按“e”(在输入位置表示“编辑”。这将带您进入基本编辑器。
转到以“linux /boot/...”开头的行,并附加“init=/bin/bash”(不带引号)。然后按F10(或者据说是启动键,我不记得具体是哪一个了)。
在启用 root 的情况下,您的发行版将在不到一秒的时间内直接启动到 bash。然后,您可以将 $PATH 变量重新导出到 bash_profile 文件(如果您不太清楚,请在 Internet 上查找示例)。
完成后,您可以正常重新启动(您不需要删除“init”,这应该已经自动完成)。