bash: '导出:找不到命令

bash: '导出:找不到命令

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

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

我只将export all_proxy =“”和export ALL_PROXY =“”复制到终端,然后当我打开新终端时,就会出现图中的情况。

这是图片:

在此输入图像描述

我输入命令:

grep export ~/.bashrc

输出:

在此输入图像描述

我输入命令:

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

输出:

在此输入图像描述

答案1

您似乎已经编辑了 .bashrc 文件。

如果我输入,我可以准确地复制这个错误

'‘export'        

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

要检查它只需执行

grep export ~/.bashrc

如果grep给出类似上面的输出,则将其从 ~/.bashrc 文件中编辑出来。

编辑:从您上次的帖子编辑中,您可以看到有 2 行以 'export 开头,并将它们从 ~/.bashrc 中删除。

答案2

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

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

‘export foo=bar’

(其中U+2019,右边的单引号)

被解释为运行‘export带有参数的命令foo=bar’。你是否写过:

'export foo=bar'

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

你要

export foo=bar

或者

'export' 'foo=bar'

即运行exportfoo=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

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

相关内容