Error de sintaxis al iniciar sesión en el subsistema bash (WSL)

Error de sintaxis al iniciar sesión en el subsistema bash (WSL)

Estoy intentando iniciar sesión en el subsistema bash de Windows para Linux cuando aparece este error:

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

Antes de recibir este error, estaba intentando colocar permanentemente un directorio en mi ruta usando la export PATH:$PATHfunción.

mi archivo /.profile

# 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

Respuesta1

Primero, debe citar las rutas del directorio que incluyen espacios en blanco y caracteres especiales, o escapar de cada uno de estos caracteres mediante una barra invertida.referencia.

En segundo lugar, la forma canónica de cambiar la RUTA es:

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

Por lo tanto, está agregando una ruta nueva delante del valor existente de PATH; de ​​lo contrario, no podrá ejecutar con fluidez un par de comandos que se encuentran en la ruta predeterminada.

En tercer lugar dentro de WSL, de forma predeterminada, las unidades de Windows C:, D:etc., están montadas en /mnt, es decir /mnt/c,, /mnt/detc. Aquí hay un ejemplo:

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

En cuarto lugar, no debería haber un archivo disponible /.profile, debe estar ubicado en el directorio de inicio del usuario ~/.profile( $HOME/.profile). Además, su .profilearchivo parece incompleto, así es como se ve el predeterminado:WSL.profile. En el archivo de perfil que se publica dentro de la pregunta, el .bashrcarchivo no tiene su origen.

Respuesta2

Cuando se configura la instancia de Linux, la variable PATH de la máquina host se clona en el archivo .bashrc de la máquina Linux (con conversiones realizadas en las rutas para que funcionen desde WSL).

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

Cuando la variable PATH contiene espacios, aparece este error, lo más probable es que encerrar el valor completo de PATH entre comillas lo solucione. También puedes eliminar los caminos ofensivos si no los necesitas.

Si necesita una solución más permanente, es decir, "arreglar una vez por máquina host" en lugar de "una vez por creación de máquina invitada", intente seguir este camino:

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

información relacionada