bash: 'export: команда не найдена

bash: 'export: команда не найдена

Каждый раз при открытии нового терминала происходит ошибка.

ошибка: "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, что, по-видимому, относится к вашему случаю, поэтому вы видите ++вместо имени файла и номера строки).

Связанный контент