用糟糕的PATH打破了我的终端

时间:2016-10-01 18:01:46

标签: bash command-line path .bash-profile

我将无效路径放入bashrc,现在我的终端无法正常工作。我已删除了bash_profile以及bashrc,但我仍然无法将其付诸实施。

我在终端中使用的每个命令都给出了错误:

  

sh:parse_git_branch:找不到命令

这是我在bash_profile中使用git自动完成功能的内容。问题是,一旦我使用/bin/rm <file>删除了文件,我无法对source ~/.bash_profile应用我的更改,因为它会给我错误。我查看了this questionthis question,但我仍然没有运气。

如何在破坏此类内容后修复命令行?

2 个答案:

答案 0 :(得分:2)

您可以使用类似于:

的命令在当前会话中导出正确的PATH

export PATH=/usr/local/bin:/usr/bin:/bin

使用此功能后,您应该能够获取bashrc。

答案 1 :(得分:0)

您可以随时在命令行上为当前shell会话的其余部分更改路径:PATH="/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin:"

导出PATH不会解决您的问题。它只会将PATH的值导出到子shell /进程。这只能实现与从命令行重置/更改PATH变量相同的功能(如上所示),因为当您在该shell环境中工作时,范围仅限于当前shell进程(及其子进程)(从命令行)。 如果你打开一个新终端(启动一个新的登录shell,这是一个父进程),bash仍然会尝试读取资源文件(.bash_profile和.bashrc),不再存在

因此,我们需要能够拓宽我们的范围并告诉bash我们要对所有未来的bashes(shell进程 - shell中的shell,shell中的shell等)进行更改,并且完成的方法是通过在资源文件中编写这些语句。

在那里设置PATH之后,每个shell会话都将生成这些资源(所有别名,命令,变量和存储在这些文件中的函数),无论是否导出它们,都会加载,因为每个shell进程在它做任何其他事情之前总是会查阅这些文件(因此它们会有效地预先导入您要导出的文件)。

bash就像任何其他脚本或程序一样。你带走了所有的输入,指针和快捷方式,现在它已经变得非常愚蠢了,所以你必须明确你所做的一切,直到你可以教它在哪里寻找东西(给它一个路径搜索)并缩短与您的对话。

如果您没有备份.bash_profile,可以使用以下网址:

    # This loads in the configuration in .bashrc
    # Put all configuration in there!
    if [ -f ~/.bashrc ]; then
        source ~/.bashrc
    fi

这是一个可以帮助你开始的.bashrc:

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