Er is een fout elke keer dat een nieuwe terminal wordt geopend,

fout: “bash: export: command not found “

Ik kopieer alleen export all_proxy =” “en exporteer ALL_PROXY =” “naar terminal, en wanneer ik een nieuwe terminal open, zal in de afbeelding van de situatie verschijnen.

Dit is een afbeelding:

voer hier een afbeeldingbeschrijving in

Ik voer het commando in:

grep export ~/.bashrc 

ouput:

voer de beschrijving van de afbeelding hier in

Ik voer het volgende commando in:

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

output:

voer de beschrijving van de afbeelding hier in

Opmerkingen

  • Kunt u het commando posten dat zowel de fout als de fout zelf opleverde? Het lijkt erop dat er een teken voor het commando staat.
  • @ bu5hman Ik kopieer alleen export all_proxy = ” ” en exporteer ALL_PROXY = ” ” naar terminal, en wanneer ik een nieuwe terminal open, zal in de afbeelding van de situatie verschijnen .
  • Werken andere bash-commandos? Heb je iets met $ PATH gedaan in deze of de vorige terminalsessie? Of je bash-profiel bewerken?
  • leidend enkele aanhalingsteken voordat je exporteert in .bashrc .bash_profile?
  • @ bu5hman Ik ‘ doe niets in $ PATH, eerste keer dat ik kali linux opnieuw installeer, de tweede is nog steeds het geval. de tweede kopieer ik alleen export all_proxy = ” ” en exporteer ALL_PROXY = ” ” naar terminal, en wanneer ik een nieuwe terminal open, zal in de afbeelding van de situatie verschijnen.

Answer

Het lijkt erop dat je je .bashrc-bestand hebt bewerkt.

Ik kan repliceer deze fout exact als ik

"‘export" 

plaats als de laatste regel in mijn .bashrc

Om het te controleren, voer je gewoon uit

grep export ~/.bashrc 

Als grep een uitvoer geeft zoals hierboven beschreven, bewerk het dan uit uw ~ / .bashrc-bestand.

Bewerken: van je laatste post-bewerking kun je zien dat je 2 regels hebt die beginnen met “exporteren, verwijder ze allebei f rom ~ / .bashrc.

Reacties

  • Wat moet ik nu doen?
  • Hier is ` een backtick. Het OP had in plaats daarvan een -teken.
  • @St é phaneChazelas Akkoord dat het commando syntactisch onjuist is. De bash-fout lijkt echter te wijten aan de regels in ~ / .bashrc.
  • Strikt genomen is het commando syntactisch correct, maar het probeert toevallig een commando op te roepen (‘export) die niet kan worden gevonden.
  • @St é phaneChazelas Akkoord. Syntactisch correct als u een nieuw commando aanroept met de naam ‘export, maar incorrect als u export probeert aan te roepen. We noemden ze typefout ‘ s. Een echte duivel om ze uit de papyrus te krijgen.

Antwoord

Ervan uitgaande dat je dat hebt gekopieerd en geplakt commando zoals het is, klaagt het over het ‘export commando dat niet gevonden wordt waar dat de U + 2018 links is enkel aanhalingsteken niet-ASCII-teken (niet te verwarren met de ASCII " apostrof / enkel aanhalingsteken (U + 0027) of ASCII ` backtick / grave accent (U + 0060) karakter).

Aangezien dat karakter op geen enkele manier speciaal is voor bash, een opdrachtregel zoals:

‘export foo=bar’ 

(waarbij U + 2019 is, het juiste enkele aanhalingsteken)

Wordt geïnterpreteerd als het uitvoeren van het ‘export commando met foo=bar’ als argument. Had je geschreven:

"export foo=bar" 

in plaats daarvan, dat wil zeggen met die U + 2018 en U + 2019 vervangen door ASCII-apostrof, een teken dat speciaal is voor bash aangezien het een “citerende operator is, die zou zijn behandeld als het uitvoeren van het export foo=bar commando zonder argument. Er is geen dergelijk commando. Dat is niet wat je ook wilt.

Jij wilt

export foo=bar 

of

"export" "foo=bar" 

Dat is om het export commando uit te voeren met een foo=bar argument.

Hier heb je om dat U + 2018-teken (en mogelijk het bijbehorende U + 2019-teken, indien van toepassing) te verwijderen, waar u het ook “in uw ~/.bashrc of ergens anders hebt ingevoegd. Waar u die code ook hebt gekopieerd en geplakt , waren die karakters niet bedoeld om te worden gekopieerd.

Om erachter te komen waar dat nepcommando is geïntroduceerd, zo niet in ~/.bashrc (hoewel je laatste bewerking laat zien dat het in je ~/.bashrc inderdaad), zou je kunnen proberen:

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

(de $PS4 zou worden genegeerd door het draaien van shells als root met bash-4.4 of nieuwer, wat echter jouw geval lijkt te zijn, daarom zie je ++ in plaats van de bestandsnaam en regelnummer).

Opmerkingen

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *