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 value
ist falsch; value
wird 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 export
Befehl oder auf andere Weise) wird nicht funktionieren; Sie müssen verwenden NAME=value
.
( export NAME = value
Versucht 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= value
wird 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.)value
NAME
NAME
value
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 SILLYPATH
mit 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. .bashrc
Natürlich nicht wahllos Code entfernen . Aber eine export
wurde 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 .bashrc
und dann neu beschaffen. Angenommen, Sie haben stattdessen geschrieben:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
Dann würde Ihr export
Befehl 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 .bashrc
in einem Editor (zB nano ~/.bashrc
, gedit ~/.bashrc
) als Ausgabe an das Ende davon Umleitung mit >>
.