Es sieht so aus, als hättest du das nicht richtig gemacht.
Ich vermute, Sie versuchen das Dritte, aber mit falscher Syntax. Fünf häufige Fehler, die zu Fehlern führen können, wie Sie sie sehen, sind:
Leerzeichen statt =. export NAME valueist falsch; valuewird dann als Name einer nachfolgenden zu exportierenden Variablen interpretiert.
(Dies geschieht , weil export NAME1 NAME2 ist die korrekte Syntax mehrere Variablen für den Export.)
Leerzeichen setzen =. In vielen Programmiersprachen ist es sowohl gültig als auch stilistisch bevorzugt, Operatoren die meiste Zeit mit Leerzeichen zu füllen. Das Zuweisen eines Werts zu einer Variablen in einem Shell-Skript (oder einer anderen Situation, in der Sie Shell-Befehle ausgeben) ist jedoch nicht zulässig. NAME = value(in einem exportBefehl oder auf andere Weise) wird nicht funktionieren; Sie müssen verwenden NAME=value.
( export NAME = valueVersucht zu exportieren Variablen mit dem Namen NAME, =und value. Zum Glück scheint dies nie still um erfolgreich zu sein , weil Sie versuchen , eine Variable zu exportieren genannt =ist ein Syntaxfehler. Im Gegensatz export NAME= valuewird zur Arbeit erscheinen, aber nicht assign --instead es die leeren zuzuweist, Zeichenfolge mit der Länge 0 exportiert und exportiert die Variable separat . Beides sind häufige Fehler.)valueNAMENAMEvalue
Trennen von Teilen des Variablenwerts durch Leerzeichen. Umgebungsvariablen können Leerzeichen enthalten, werden in der Praxis jedoch selten als Feldtrennzeichen in Umgebungsvariablen verwendet. Wenn eine einzelne Variable absichtlich mehrere Pfade enthält, werden sie normalerweise :zum Trennen verwendet.
Leerzeichen werden bei der Zuweisung zu Variablen nicht in Anführungszeichen gesetzt. Manchmal soll der Wert einer Umgebungsvariablen ein Leerzeichen enthalten. Dies kann beispielsweise der Name eines Verzeichnisses sein, das wirklich ein Leerzeichen enthält. In diesem Fall müssen Leerzeichen angegeben werden.
Eine Möglichkeit, dies zu tun, besteht darin, ihnen vorauszugehen \. Siehe Wie kann ich Klammern schützen, die an einen cd-Befehl übergeben werden? und Datei kann nicht gelöscht werden, um Informationen auf andere Weise zu erhalten - die in den Antworten angegebenen Methoden gelten, obwohl sich keine der beiden Fragen speziell mit der Zuweisung zu Umgebungsvariablen befasst.
Es gibt zum Beispiel einige Möglichkeiten, die Umgebungsvariable SILLYPATHmit dem Wert zu exportieren /home/ek/silly name/bin:
export SILLYPATH=/home/ek/silly\ name/bin
export SILLYPATH='/home/ek/silly name/bin'
export SILLYPATH="/home/ek/silly name/bin"
Wenn ein Ordner, den Sie in einer Shell verwenden oder einer häufig verwendeten Umgebungsvariablen zuweisen müssen, ein Leerzeichen enthält, kann es häufig von Vorteil sein, ihn umzubenennen. (Aber manchmal ist das unpraktisch oder unerwünscht.)
Zuweisen und / oder Exportieren einer Variablen, wenn überhaupt nichts zu tun war. Dies ist eine Art Metafehler. Das spezifische technische Problem ist oft eines der oben genannten, aber die Lösung besteht darin, die störende Leitung oder einen Teil davon loszuwerden, anstatt sie zu beheben. .bashrcNatürlich nicht wahllos Code entfernen . Aber eine exportwurde möglicherweise versehentlich hinzugefügt oder versehentlich mehr Code in ihm haben , als beabsichtigt war. Angenommen, Sie wollten schreiben:
echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
Das würde anhängen .bashrcund dann neu beschaffen. Angenommen, Sie haben stattdessen geschrieben:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
Dann würde Ihr exportBefehl nicht nur einen erweiterten Wert von exportieren PATH, sondern auch versuchen, die Variablen mit den Namen .und zu exportieren. Dies ist nicht das, was Sie möchten. Da diese Zeichen enthalten, die in Variablennamen nicht zulässig sind, erhalten Sie jedes Mal eine Fehlermeldung, wenn Sie eine neue interaktive Bash-Shell starten./home/your-username/.bashrc
Um dieses Problem zu vermeiden, schlage ich vor , die Bearbeitung .bashrcin einem Editor (zB nano ~/.bashrc, gedit ~/.bashrc) als Ausgabe an das Ende davon Umleitung mit >>.