Syntaxfehler beim Anmelden beim Bash-Subsystem (WSL)

Syntaxfehler beim Anmelden beim Bash-Subsystem (WSL)

Ich versuche, mich beim Bash-Windows-Subsystem für Linux anzumelden, als ich diese Fehlermeldung erhalte:

-bash: /home/User1/.profile: line 28: syntax error near unexpected token `('

Bevor dieser Fehler auftrat, habe ich versucht, mithilfe der Funktion dauerhaft ein Verzeichnis in meinen Pfad einzufügen export PATH:$PATH.

meine /.profile-Datei

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
export PATH=/home/user1/.local/bin:/home/janeen/bin:/home/janeen/miniconda3/bin:/home/User1/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/c/ProgramData/DockerDesktop/version-bin:/c/Program Files/Docker/Docker/resources/bin:/c/Program Files (x86)/Common Files/Oracle/Java/javapath_target_34052312:/c/Windows/System32:/c/Windows:/c/Windows/System32/wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Strawberry/c/bin:/c/Strawberry/perl/site/bin:/c/Strawberry/perl/bin:/c/Users/User1/AppData/Local/Programs/Python/Python36:/c/Users/Janeen/AppData/Local/Programs/Python/Python36/Scripts:/c/Users/User1/AppData/Local/Programs/Python/Python37-32/Scripts:/c/Users/Janeen/AppData/Local/Programs/Python/Python37-32:/c/Users/User1/AppData/Local/Microsoft/WindowsApps:/e/Program Files (x86)/TBtools/bin:/snap/bin:/software/samtools

Antwort1

Zuerst müssen Sie die Verzeichnispfade, die Leerzeichen und Sonderzeichen enthalten, in Anführungszeichen setzen oder jedes dieser Zeichen durch einen Backslash maskieren -Referenz.

Zweitens ist die kanonische Methode zum Ändern des Pfads:

export PATH=/some/new/path:$PATH

Sie fügen also vor dem vorhandenen Wert einen neuen Pfad hinzu PATH, da Sie andernfalls einige Befehle, die sich im Standardpfad befinden, nicht reibungslos ausführen können.

Drittens werden innerhalb von WSL standardmäßig die Windows-Laufwerke usw. unter gemountet C:, also , usw. Hier ein Beispiel:D:/mnt/mnt/c/mnt/d

export PATH='/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath_':$PATH

Viertens sollte die Datei nicht verfügbar sein /.profile, sie muss sich im Home-Verzeichnis des Benutzers befinden ~/.profile( $HOME/.profile). Außerdem sieht Ihre .profileDatei unvollständig aus, so sieht die Standarddatei aus:WSL.profile. In der Profildatei, die in der Frage gepostet wird, .bashrcist die Datei nicht mit einer Quelle versehen.

Antwort2

Wenn die Linux-Instanz eingerichtet ist, wird die PATH-Variable des Hostcomputers in die .bashrc-Datei des Linux-Computers geklont (wobei an den Pfaden Konvertierungen vorgenommen werden, damit sie innerhalb von WSL funktionieren).

Quelle: https://lifesaver.codes/answer/problems-with-windows-path-variable-getting-imported-1890

Dieser Fehler tritt auf, wenn die Variable PATH Leerzeichen enthält. Das Einschließen des gesamten PATH-Werts in Anführungszeichen behebt das Problem höchstwahrscheinlich. Sie können die fehlerhaften Pfade auch entfernen, wenn Sie sie nicht benötigen.

Wenn Sie eine dauerhaftere Lösung benötigen, also eine Korrektur „einmal pro Host-Rechner“ statt „einmal pro Erstellung eines Gast-Rechners“, versuchen Sie es mit diesem Weg:

https://github.com/microsoft/WSL/issues/1640#issuecomment-276408942

verwandte Informationen