#bash #ubuntu #windows-subsystem-for-linux
Вопрос:
Ввод bash в адресную строку проводника или открытие WSL через терминал Windows не открывает его в текущем каталоге. WSL всегда открывается в корневом каталоге /
.
Я проверил эту команду в powershell (Get-ItemProperty -name "(default)" -LiteralPath Registry::HKEY_CLASSES_ROOTDirectoryshellWSLcommand).'(default)'
, как указано в другом вопросе, результат соответствует ожиданиям: wsl.exe --cd "%V"
Я даже попытался запустить команду wsl.exe --cd "C:/random/path/to/some/directory"
, и независимо от пути, по которому всегда открывается WSL /
.
Интересно, что если я открою wsl, введя ubuntu
cmd или powershell, он откроет bash в моем /home/username/
каталоге.
У кого-нибудь была эта проблема? Как я могу это исправить?
РЕДАКТИРОВАНИЕ добавление следующих строк в мой файл wsl.conf, похоже, устранило проблему, но я понятия не имею, почему, кто-нибудь может объяснить?
# Enable extra metadata options by default
[automount]
enabled = true
root = /windir/
options = "metadata,umask=22,fmask=11"
mountFsTab = false
EDIT2 Я прошел процесс исключения, удаляя по одной строке за раз, пытаясь выяснить, какая из этих строк сделала свое дело. выключение и перезапуск wsl каждый раз, когда я удалял строку, WSL продолжал открываться в нужном каталоге, и в конце концов я удалил все строки, и он все еще просыпался. WSL продолжает открываться в правильном каталоге даже после того, как я удалил файл wsl.conf. Я так запутался
EDIT3
cat ~/.profile ~/.bash_profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# 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
cat: /home/rwagh/.bash_profile: No such file or directory
Комментарии:
1.
whoami
cat ~/.profile ~/.bash_profile
2. что мне делать с выводом? вы можете увидеть результаты в EDIT3