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