登入 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- ie /mnt/c/mnt/d等下。

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

第四,不應該有可用文件/.profile,它必須位於使用者主目錄~/.profile$HOME/.profile)中。還有你的.profile文件看起來不完整,預設文件如下所示:世界SL.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

相關內容