Bei jedem Öffnen eines neuen Terminals tritt ein Fehler auf.

Fehler: „bash: export: Befehl nicht gefunden „

Ich kopiere nur export all_proxy =“ „und exportiere ALL_PROXY =“ „zum Terminal. Wenn ich dann ein neues Terminal öffne, erscheint das Bild der Situation.

Dies ist das Bild:

Geben Sie hier die Bildbeschreibung ein

Ich gebe den Befehl ein:

grep export ~/.bashrc 

Ausgabe:

Geben Sie hier die Bildbeschreibung ein.

Ich gebe den folgenden Befehl ein:

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

Ausgabe:

Geben Sie hier die Bildbeschreibung ein.

Kommentare

  • Können Sie den Befehl, der den Fehler verursacht hat, sowie den Fehler selbst veröffentlichen? Es sieht so aus, als hätten Sie ein Zeichen vor dem Befehl.
  • @ bu5hman Ich kopiere nur export all_proxy = “ “ und exportiere ALL_PROXY = “ “ zum Terminal. Wenn ich dann ein neues Terminal öffne, erscheint das Bild der Situation
  • Funktionieren andere Bash-Befehle? Haben Sie in dieser oder der vorherigen Terminalsitzung etwas mit $ PATH getan? Oder bearbeiten Sie Ihr Bash-Profil?
  • führendes einfaches Anführungszeichen vor dem Export in .bashrc .bash_profile?
  • @ bu5hman Ich ‚ tue nichts In $ PATH installiere ich zuerst Kali Linux neu, das zweite ist immer noch der Fall. Das zweite Mal kopiere ich nur den Export all_proxy = “ “ und exportiere ALL_PROXY = “ “ in das Terminal. Wenn ich dann ein neues Terminal öffne, erscheint das Bild der Situation.

Antwort

Es sieht so aus, als hätten Sie Ihre .bashrc-Datei bearbeitet.

Ich kann Replizieren Sie diesen Fehler genau, wenn ich

"‘export" 

als letzte Zeile in meine .bashrc

eingebe. Um dies zu überprüfen, führen Sie einfach

aus

grep export ~/.bashrc 

Wenn grep eine Ausgabe wie oben ergibt, bearbeiten Sie sie aus Ihrer ~ / .bashrc-Datei heraus.

Bearbeiten: Aus Ihrer letzten Beitragsbearbeitung geht hervor, dass Sie 2 Zeilen haben, die mit „Exportieren, beide löschen“ beginnen. f rom ~ / .bashrc.

Kommentare

  • Was soll ich jetzt tun?
  • Hier ist ` ein Backtick. Das OP hatte stattdessen ein -Zeichen.
  • @St é phaneChazelas Einverstanden, dass der Befehl syntaktisch falsch ist. Der Bash-Fehler scheint jedoch auf die Zeilen in ~ / .bashrc zurückzuführen zu sein.
  • Genau genommen ist der Befehl syntaktisch korrekt, versucht jedoch zufällig, einen Befehl aufzurufen (‘export), das nicht gefunden werden kann.
  • @St é phaneChazelas Einverstanden. Syntaktisch korrekt, wenn Sie einen neuen Befehl mit dem Namen ‘export aufrufen, aber falsch, wenn Sie versuchen, export aufzurufen. Wir haben sie Tippfehler ‚ s genannt. Ein echter Teufel, um sie aus dem Papyrus herauszuholen.

Antwort

Angenommen, Sie haben das kopiert Befehl wie er ist, beschwert sich darüber, dass der Befehl ‘export nicht gefunden wurde, wenn dieser das verbleibende U + 2018 ist einfaches Anführungszeichen Nicht-ASCII-Zeichen (nicht zu verwechseln mit dem ASCII-Apostroph " / einfaches Anführungszeichen (U + 0027) oder ASCII ` Backtick / schwerwiegender Akzent (U + 0060)).

Da dieses Zeichen in keiner Weise speziell für bash, eine Befehlszeile, ist wie:

‘export foo=bar’ 

(wobei U + 2019 ist, das rechte einfache Anführungszeichen)

Wird so interpretiert, dass der Befehl ‘export mit dem Argument foo=bar’ ausgeführt wird. Hatten Sie stattdessen geschrieben:

"export foo=bar" 

, dh diese U + 2018 und U + 2019 wurden durch ASCII-Apostroph ersetzt, ein Zeichen, das speziell für bash als „zitierender Operator“, der so behandelt worden wäre, als würde der Befehl export foo=bar ohne Argument ausgeführt. Es gibt keinen solchen Befehl was Sie wollen.

Sie wollen

export foo=bar 

oder

"export" "foo=bar" 

Das heißt, Sie führen den Befehl export mit einem foo=bar Argument aus.

Hier benötigen Sie um dieses U + 2018-Zeichen (und möglicherweise das entsprechende U + 2019-Zeichen, falls vorhanden) zu entfernen, wo immer Sie es in Ihre ~/.bashrc oder anderswo eingefügt haben. Wo immer Sie diesen Code kopiert haben Diese Zeichen sollten nicht kopiert werden.

Um herauszufinden, wo dieser falsche Befehl eingeführt wurde, wenn nicht in ~/.bashrc (obwohl Ihre letzte Bearbeitung zeigt, dass er sich in Ihrer ~/.bashrc in der Tat) könnten Sie versuchen, Folgendes auszuführen:

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

(die $PS4 wird von laufenden Shells ignoriert als root mit bash-4.4 oder neuer, was jedoch Ihr Fall zu sein scheint, weshalb Sie ++ anstelle des Dateinamens sehen und Zeilennummer).

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.