登录 Bash 子系统 (WSL) 时出现语法错误

登录 Bash 子系统 (WSL) 时出现语法错误

当我尝试登录到适用于 Linux 的 Bash Windows 子系统时收到此错误:

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

在出现此错误之前,我曾尝试使用该函数将目录永久地放在我的路径中export PATH:$PATH

我的 /.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

答案1

首先,您需要引用包含空格和特殊字符的目录路径,或者用反斜杠转义每个字符 -参考

其次,改变PATH的规范方法是:

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

因此,您需要在现有值前面添加一些新路径PATH,否则您将无法流畅地执行位于默认路径中的几个命令。

第三,在 WSL 中,默认情况下,Windows 驱动器C:等都D:安装在以下位置/mnt- 即/mnt/c/mnt/d等。以下是示例:

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

第四,不应该有可用的文件/.profile,它必须位于用户主目录中~/.profile$HOME/.profile)。此外,您的.profile文件看起来不完整,以下是默认文件的样子:西弗吉尼亚海岸.profile。在问题中发布的配置文件中,该.bashrc文件没有来源。

答案2

当设置 Linux 实例时,主机 PATH 变量被克隆到 Linux 机器 .bashrc 文件中(对路径进行转换以使其在 WSL 内部工作)。

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

当 PATH 变量包含空格时,您会收到此错误,最有可能将 PATH 的整个值括在引号中即可修复该错误。如果不需要有问题的路径,您也可以删除它们。

如果您需要更永久的解决方案,即“每台主机修复一次”而不是“每台客户机创建一次”,请尝试按照以下路径操作:

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

相关内容