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:
Ich gebe den Befehl ein:
grep export ~/.bashrc
Ausgabe:
Ich gebe den folgenden Befehl ein:
env SHELLOPTS=xtrace \ BASH_XTRACEFD=7 \ PS4="[${BASH_SOURCE:-$BASH_EXECUTION_STRING}:$LINENO]> " \ 7> >(grep ‘) bash -l
Ausgabe:
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
- Was soll ich jetzt tun?
- @MichaelSmith Sie müssen
~/.bashrc
, aber vorher schauen Sie hier: unix.stackexchange.com/questions/399626 - @MichaelSmith, was ich in der Antwort gesagt habe. Möglicherweise möchten Sie auch, dass einige Tutorials erhält oder mit einem einfacheren Unix-ähnlichen System beginnt, bevor Sie ein System verwenden, das für Profis bestimmt ist
- @St é phane Chazelas Ich habe den Code als Antwort von stackoverflow.com/questions/47304988/…
- @MichaelSmith Das OP verwendet Kali, aber der Fehler hängt nicht wirklich mit der Distribution zusammen. Wäre auch mit Ubuntu passiert ….. nicht ‚ Kopieren Einfügen