Я пытаюсь войти в подсистему 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