bash: '导出: 找不到命令

-4 bash

每次打开新终端都会出错,

错误:“bash:'导出:找不到命令”

我只复制export all_proxy="" 和export ALL_PROXY="" 到终端,然后当我打开一个新终端时,会出现如图所示的情况。

这是图片:

在此处输入图片说明

我输入命令:

grep export ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

我输入命令:

env SHELLOPTS=xtrace \
    BASH_XTRACEFD=7 \
    PS4='[${BASH_SOURCE:-$BASH_EXECUTION_STRING}:$LINENO]> ' \
    7> >(grep ‘) bash -l
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

Sté*_*las 5

假设您已按原样复制粘贴该命令,它会抱怨在 U+2018左单引号非 ASCII 字符处‘export找不到该命令(不要与 ASCII撇号/单引号混淆( U+0027) 或 ASCII反引号/重音符 (U+0060) 字符)。'`

由于该字符在任何方面都没有特殊性bash,因此命令行如下:

‘export foo=bar’
Run Code Online (Sandbox Code Playgroud)

(哪里是U+2019,右单引号)

被解释为‘export使用foo=bar’as 参数运行命令。你是否写过:

'export foo=bar'
Run Code Online (Sandbox Code Playgroud)

取而代之的是,将那些 U+2018 和 U+2019 替换为 ASCII 撇号,这是一个特殊的字符,bash因为它是一个引用运算符,它会被视为运行export foo=bar没有参数的命令。没有这样的命令。那也不是你想要的。

你要

export foo=bar
Run Code Online (Sandbox Code Playgroud)

或者

'export' 'foo=bar'
Run Code Online (Sandbox Code Playgroud)

那就是运行export带有foo=bar参数的命令。

在这里,您需要删除该 U+2018 字符(可能还有相应的 U+2019 字符,如果有的话)在您~/.bashrc或其他地方插入它的任何位置。无论您从何处复制粘贴该代码,都不打算复制这些字符。

要查找该虚假命令被引入的位置~/.bashrc(尽管您的最新编辑显示它~/.bashrc确实在您中),您可以尝试运行:

env SHELLOPTS=xtrace \
    BASH_XTRACEFD=7 \
    PS4='[${BASH_SOURCE:-$BASH_EXECUTION_STRING}:$LINENO]> ' \
    7> >(grep ‘) bash -l
Run Code Online (Sandbox Code Playgroud)

(但是,与 bash-4.4 或更新版本$PS4一样运行的 shell 会忽略该文件root,这似乎是您的情况,这就是为什么您看到++的是文件名和行号而不是文件名和行号的原因)。

  • @MichaelSmith,我在回答中说的话。您可能还想 [在使用专为专业人士设计的系统之前获得一些教程或从更简单的类 Unix 系统开始](/q/399626) (2认同)

bu5*_*man 5

看起来您已经编辑了 .bashrc 文件。

如果我把这个错误完全复制

'‘export'        
Run Code Online (Sandbox Code Playgroud)

作为我的 .bashrc 中的最后一行

要检查它只需执行

grep export ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

如果grep给出像上面这样的输出,那么从你的 ~/.bashrc 文件中编辑它。

编辑:从您上次编辑的帖子中,您可以看到有 2 行以“export delete them from ~/.bashrc”开头。