.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'

'(' マークは 1 行に 1 回だけ表示されます。

:/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\)/...'代わりにリテラルバックスラッシュを含む文字列を割り当てます。)

おすすめ記事