当基本命令不起作用时,如何在〜/ .bashrc中还原我的PATH?

时间:2018-08-25 15:36:46

标签: linux bash environment-variables

在Ubuntu上安装程序时,我弄乱了〜/ .bashrc中的路径。现在,我无法使用ls,vim等Linux命令。因此,我无法编辑〜/ .bashrc文件(它是一个群集)。如何修复我的Shell启动文件?

2 个答案:

答案 0 :(得分:4)

如果$ PATH丢失了,没问题,您可以在/usr/bin/之类的任何普通地方找到您的编辑器。

因此,您可以通过以下方式开始编辑:

/usr/bin/vim .bashrc

如果使用发行版创建新用户,然后将.bashrc文件从那里复制到自己的主目录,则可以轻松地简单地创建一个新用户。每个发行版都提供了一个简单的GUI工具,用于将新用户添加到系统中。因此,它应该在没有有效的.bashrc的情况下工作。

让我感到奇怪的是:我的所有PATH设置都不直接在.bashrc中,而是在系统范围内。在fedora上,它类似于:

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

对于ubuntu,情况会有所不同。但这没关系,因为在这种情况下,创建新用户也将有所帮助;)

答案 1 :(得分:2)

指定指向编辑器的标准路径

指定编辑器的绝对路径(例如vim,nano或emacs)通常可以使您修复Shell启动文件。例如,要编辑并重新获得您的Bash资源文件,请执行以下操作:

/usr/bin/nano ~/.bashrc &&
    . ~/.bashrc

创建一个干净的环境

如果您只想启动一个新的Shell,而不继承当前环境或获取当前的.profile或.bashrc文件,则可以这样做。例如:

/usr/bin/env -i /bin/bash --noprofile --norc

然后,您应该能够依靠可靠的系统默认值来编辑 PATH 或其他设置,然后手动获取Shell的启动文件,或者仅使用以下命令执行新的Shell:

command exec /bin/bash

在当前Shell中覆盖PATH

您还可以尝试使用标准的 getconf 实用程序使用系统默认值覆盖当前shell中的PATH。例如:

export PATH=$(command getconf PATH)

您还可以将PATH手动设置为最小的默认值,例如:

export PATH=/usr/bin:/bin:/usr/sbin:/sbin

所以您可以继续处理您的问题。

集群和分布式系统

这方面可能不在编程的站点范围内,尤其是因为我们没有足够的关于您的系统的信息。通常,如果您弄乱了系统范围或群集环境设置,则可能需要查看/etc/profile、/etc/profile.d、/etc/skel、NFS共享或您的帐户或其他位置中的值。正在设置应用程序PATH。

如果问题是帐户的本地问题,那么我上面提供的提示将有所帮助。您可能还会考虑登录另一个没有相同问题的帐户。

知道要解决多系统配置问题的位置,或者知道特定于系统或用户的PATH设置应该在合理的堆栈溢出问题范围之外。除此之外,以上任何一种解决方案都应该有效。