.bashrc: Syntaxfehler in der Nähe eines unerwarteten Tokens '('
Ich benutze das Windows-Subsystem für Linux. Beim Starten von Ubuntu erhalte ich folgende Fehler:
-bash: /home/divyansh/.bashrc: line 119: syntax error near unexpected token `('
-bash: /home/divyansh/.bashrc: line 119: `export PATH=/mnt/z/usr/local/bin:/mnt/z/usr/local/bin:/home/divyansh/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/WindowsApps/CanonicalGroupLimited.UbuntuonWindows_2004.2020.424.0_x64__79rhkp1fndgsc:/mnt/c/Python38/Scripts:/mnt/c/Python38:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/Intel/WiFi/bin:/mnt/c/Program Files/Common Files/Intel/WirelessCommon:/mnt/c/MinGW/bin:/mnt/c/ProgramData/pbox:/mnt/c/Program Files/nodejs:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Program Files/Git/cmd:/mnt/c/Users/asus/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/asus/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin:/mnt/c/tools:/mnt/c/Users/asus/AppData/Roaming/npm:/mnt/c/Users/asus/AppData/Local/atom/bin:/snap/bin'
Das Token '(' wird nur einmal in der Zeile angezeigt
: / mnt / c / Programme (x86) / Gemeinsame Dateien / Oracle / Java / javapath:
. Ich verstehe nicht, warum dieser Fehler verursacht wird. Was kann ich tun, um dies zu klären? Wie wirkt es sich auf die jeweiligen Pfadvariablen aus, wenn ich es so lasse, wie es ist?
Antworten
Im Hinblick auf die Shell - Syntax, (
ist ein Sonderzeichen (wie ;
, >
, &
etc.), kann es nicht als Teil eines zugeordneten Wertes erscheinen ohne entkommen oder zitiert werden. Es wird zB zum Starten von Subshells verwendet, aber wie Sie bemerkt haben, verursacht es in den meisten Fällen nur einen Syntaxfehler. (Anders als zum Beispiel, &
was den Befehl nur stillschweigend beenden würde.)
Die Klammern sind jedoch nicht Ihr einziges Problem, Sie haben auch Leerzeichen im Pfad. Dies ist kein Syntaxfehler, sondern ändert die Bedeutung des Befehls. export PATH=/mnt/c/Program Files/Somepath
Mittel zuweisen /mnt/c/Program
zu PATH
, und eine Variable mit dem Namen zu exportieren Files/Somepath
, die auch einen Fehler verursacht , weil der Schrägstrich nicht gültig in einem Variablennamen ist.
Sie müssen entweder alle Klammern und Leerzeichen wie in Program\ Files\ \(x86\)
maskieren oder einfach die gesamte Zeichenfolge zitieren:
PATH='/mnt/z/usr/local/bin:...:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:...'
oder nur Teile davon, obwohl das schwieriger zu lesen sein kann:
PATH=/mnt/z/usr/local/bin:...:'/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath':...
(Beachten Sie, dass Sie nicht beide ineinander ausführen können, sondern PATH='/mnt/c/Program\ Files\ \(x86\)/...'
eine Zeichenfolge mit wörtlichen Backslashes zuweisen würden.)
Fügen Sie \
vor jeder Klammer ein Escape-Zeichen hinzu :
Program Files \(x86\)/