Каждый раз при открытии нового терминала происходит ошибка.
ошибка: "bash: 'export: команда не найдена"
Я только копирую 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
Предполагая, что вы скопировали и вставили эту команду как есть, он жалуется на то, что ‘export
команда не найдена, где ‘
это U+2018левая одинарная кавычкасимвол, не входящий в 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
( однако $PS4
оболочки, работающие с bash-4.4 или более поздними версиями, будут игнорироваться root
, что, по-видимому, относится к вашему случаю, поэтому вы видите ++
вместо имени файла и номера строки).