-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)
输出:
假设您已按原样复制粘贴该命令,它会抱怨在 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
,这似乎是您的情况,这就是为什么您看到++
的是文件名和行号而不是文件名和行号的原因)。
看起来您已经编辑了 .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”开头。