当我尝试登录到适用于 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