.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

셸 구문의 경우 이스케이프 나 인용 없이는 지정된 값의 일부로 나타날 수 없는 (특수 문자(예: 등)입니다. ;예를 들어, 서브셸을 시작하는 데 사용되지만 알다시피 대부분의 경우 구문 오류가 발생합니다. (예를 들어, 명령을 자동으로 종료하는 것과는 다릅니다.)>&&

그러나 대괄호만이 문제가 아니며 경로에 공백도 있습니다. 이는 구문 오류가 아니지만 명령의 의미를 변경합니다. 은 에 할당 하고 이름이 지정된 변수를 내보내는 것을 export PATH=/mnt/c/Program Files/Somepath의미하며 , 변수 이름에 슬래시가 유효하지 않기 때문에 오류가 발생합니다./mnt/c/ProgramPATHFiles/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\)/

관련 정보