Синтаксическая ошибка при входе в подсистему bash (WSL)

Синтаксическая ошибка при входе в подсистему bash (WSL)

Я пытаюсь войти в подсистему bash Windows для Linux и получаю следующую ошибку:

-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 хост-машины клонируется в файл .bashrc машины Linux (с преобразованиями путей, чтобы они работали изнутри WSL).

источник: https://lifesaver.codes/answer/problems-with-windows-path-variable-getting-imported-1890

Если переменная PATH содержит пробелы, вы получаете эту ошибку. Скорее всего, ее исправит заключение всего значения PATH в кавычки. Вы также можете удалить неверные пути, если они вам не нужны.

Если вам нужно более постоянное решение, то есть «исправление один раз для каждой хост-машины» вместо «один раз для каждого создания гостевой машины», попробуйте пойти по этому пути:

https://github.com/microsoft/WSL/issues/1640#issuecomment-276408942

Связанный контент