Wie behebe ich den Fehler "Keine gültige Kennung", nachdem Umgebungsvariablen festgelegt wurden?


12

Ich versuche cocos2dx in Ubuntu 14.04 LTS einzurichten, aber nach dem Setzen der Umgebungsvariablen (in .bashrc) bekomme ich diesen Fehler:

bash: export: dev/cocos2d-x-3.2/tools/cocos2d-console/bin': not a valid identifier 
bash: export:/home/john/android': not a valid identifier 
bash: export: dev/android-ndk-r10b': not a valid identifier 
bash: export:dev/adt-bundle-linux-x86_64-20140702/sdk': not a valid identifier

Und ich weiß nicht, was ich tun soll, um das Problem zu beheben.


1
Sie müssen genau zeigen, wie Sie die Variablen einstellen.
Glenn Jackman

Antworten:


16

aber nach dem Einstellen der Umgebungsvariablen

Es sieht so aus, als hättest du das nicht richtig gemacht.

Die Fehler, die Sie erhalten, bedeuten, dass die Pfade (wie /home/john/android) als Namen der Variablen und nicht als die ihnen zugewiesenen Werte verwendet werden.

  • Die korrekte Syntax zum Zuweisen einer Variablen lautet NAME=value.
  • Die korrekte Syntax zum Exportieren einer Variablen (mit dem Wert, der ggf. bereits zugewiesen wurde) lautet export NAME.
  • Die korrekte Syntax zum Zuweisen und Exportieren einer Variablen (mit dem zugewiesenen Wert) ist export NAME=value.

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:

  1. 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.)

  2. 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

  3. 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.

  4. 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.)

  5. 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 >>.

Ich vermute, dies sind genug Informationen, um den Fehler in Ihrer .bashrcDatei zu finden und zu beheben . Wenn Sie weitere Hilfe benötigen, sollten Sie natürlich den vollständigen Inhalt dieser Datei zur Analyse bereitstellen. (Es ist nur ein Zufall, dass Ihr Problem häufig und mit einer ausreichend transparenten Fehlermeldung auftritt, um eine allgemeine Antwort wie diese zu ermöglichen.)


2
Vielen Dank! So eine ausführliche Antwort. In meinem Fall Raum setzt um = war das Problem. Ich hatte eine Weile damit zu kämpfen.
Rengas

5

Stellen Sie sicher, dass Sie ausgeführt werden:

export ENV_VARIABLE

Eher, als:

export $ENV_VARIABLE

Andernfalls versuchen Sie, den Wert der Variablen anstelle der Variablen selbst zu exportieren, sodass dieser Fehler angezeigt wird.


1

Beseitigen Sie Leerzeichen und das Dollarzeichen. Dies funktioniert zum Beispiel genauso, wie Sie ein Django-Einstellungsmodul auf einem Webserver über SSH einrichten können, dh:

export DJANGO_SETTINGS_MODULE=myapp.settings

0

Ich habe gesehen, dass dies ziemlich häufig auftritt, wenn Sie etwas mit Anführungszeichen (aus dem Internet) kopieren und Ihre Umgebungen oder Ihre bashrc-Datei aktualisieren.

Ein guter Anfang wäre, die Anführungszeichen einfach manuell in den eingefügten Inhalt einzugeben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.