.bashrc:意外标记“(”附近出现语法错误

.bashrc:意外标记“(”附近出现语法错误

我使用适用于 Linux 的 Windows 子系统。启动 Ubuntu 时,我收到以下错误:

-bash: /home/divyansh/.bashrc: line 119: syntax error near unexpected token `('
-bash: /home/divyansh/.bashrc: line 119: `export PATH=/mnt/z/usr/local/bin:/mnt/z/usr/local/bin:/home/divyansh/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/WindowsApps/CanonicalGroupLimited.UbuntuonWindows_2004.2020.424.0_x64__79rhkp1fndgsc:/mnt/c/Python38/Scripts:/mnt/c/Python38:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/Intel/WiFi/bin:/mnt/c/Program Files/Common Files/Intel/WirelessCommon:/mnt/c/MinGW/bin:/mnt/c/ProgramData/pbox:/mnt/c/Program Files/nodejs:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Program Files/Git/cmd:/mnt/c/Users/asus/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/asus/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin:/mnt/c/tools:/mnt/c/Users/asus/AppData/Roaming/npm:/mnt/c/Users/asus/AppData/Local/atom/bin:/snap/bin'

'(' 标记在行中仅出现一次

:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:

。我不明白为什么会导致这个错误。我可以做什么来清除这个?如果我保持原样,它会如何影响相应的路径变量?

答案1

对于 shell 语法,(是一个特殊字符(如、;等),如果不进行转义或引用,它不能作为指定值的一部分出现。例如,它用于启动子 shell,但正如您所注意到的,在大多数情况下它只会导致语法错误。 (不像,比如说,它只是默默地结束命令。)>&&

然而,括号并不是唯一的问题,路径中还有空格。这不是语法错误,但改变了命令的含义。export PATH=/mnt/c/Program Files/Somepath意味着分配/mnt/c/ProgramPATH,并导出一个名为 的变量Files/Somepath,这也会导致错误,因为斜杠在变量名中无效。

您需要转义所有括号和空格,如 中Program\ Files\ \(x86\),或者简单地引用整个字符串:

PATH='/mnt/z/usr/local/bin:...:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:...'

或者只是其中的一部分,尽管这可能更难阅读:

PATH=/mnt/z/usr/local/bin:...:'/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath':...

(请注意,您不能在彼此内部同时执行这两项操作,PATH='/mnt/c/Program\ Files\ \(x86\)/...'而是分配一个包含文字反斜杠的字符串。)

答案2

\在每个括号前添加转义字符:

Program Files \(x86\)/

相关内容