Erro de sintaxe ao entrar no subsistema bash (WSL)

Erro de sintaxe ao entrar no subsistema bash (WSL)

Estou tentando entrar no subsistema bash do Windows para Linux quando recebo este erro:

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

Antes de receber esse erro, eu estava tentando colocar permanentemente um diretório no meu caminho usando a export PATH:$PATHfunção.

meu arquivo /.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

Responder1

Primeiro, você precisa citar os caminhos do diretório que incluem espaços em branco e caracteres especiais, ou escapar de cada um desses caracteres com uma barra invertida -referência.

Segundo, a maneira canônica de alterar o PATH é:

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

Assim, você está adicionando um novo caminho na frente do valor existente de PATH, caso contrário, não será capaz de executar com fluência alguns comandos localizados no caminho padrão.

Terceiro, no WSL, por padrão, as unidades do Windows C:e D:assim por diante são montadas em /mnt- ou seja /mnt/c, /mnt/d, etc.

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

Quarto, não deve haver arquivo disponível /.profile, ele deve estar localizado no diretório inicial do usuário ~/.profile( $HOME/.profile). Além disso, seu .profilearquivo parece incompleto. Aqui está a aparência do arquivo padrão:WSL.profile. No arquivo de perfil postado na pergunta, o .bashrcarquivo não é originado.

Responder2

Quando a instância do Linux é configurada, a variável PATH da máquina host é clonada no arquivo .bashrc da máquina Linux (com conversões feitas nos caminhos para fazê-los funcionar dentro do WSL).

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

Quando a variável PATH contém espaços, você recebe esse erro, provavelmente colocar todo o valor de PATH entre aspas irá corrigi-lo. você também pode remover os caminhos ofensivos se não precisar deles.

Se você precisar de uma solução mais permanente, ou seja, "consertar uma vez por máquina host" em vez de "uma vez por criação de máquina convidada", tente seguir este caminho:

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

informação relacionada